Git是很流行很好用的版本控制器,但是仅仅依靠强大的console管理并不能完全满足项目管理的需要:
1. Leader们希望能更直观的看到代码的更新和足迹,比如通过Wed UI界面。这时,把Git整合到项目管理系统中(比如Trac)是一个很不错的方式,例如这里。当然,我们也可以很方便的搭建专门的Git服务,见方式一。
2. 我们需要通过比SSH更“酷”的方式来clone代码库,比如通过http。这时,你居然想不到Git自带的backend就可以轻易的解决这个问题,详见方式二。
一、通过Gitweb提供代码浏览服务
注意,Gitweb仅仅提供基于浏览器的代码浏览,不提供代码更改、代码提交等服务。
1. 安装Gitweb:
sudo apt-get install gitweb
ubuntu中gitweb cgi脚本应该默认放在/usr/lib/cgi-bin/中,刚好和apache2默认的cgi-bin目录一致,太体贴了 :)
否则,请参照apache的default配置,为你的apache2增加响应gitweb cgi的路径,例如:
Alias /gitweb /usr/share/gitweb Redirect permanent /repos /gitweb <Directory /usr/share/gitweb> Options FollowSymLinks +ExecCGI AddHandler cgi-script .cgi AuthType Basic AuthName "Restricted Files" AuthUserFile /opt/access/git.passwd Require valid-user </Directory>
2. 配置Gitweb,增加git库:将/etc/gitweb.conf中的$projectroot指向你git库(允许多个)所在的目录。
3. OK。访问http://yourhost/repos应该可以看到所有git库的代码了,包括更新足迹。
4. 编辑gitweb.cgi,设置Gitweb,比如公司logo之类的(参考)。
二、通过Smart Http提供代码下载、上传服务:
Smart Http是通过激活Git(1.6.6及以后版本)自带的、名为git-http-backend的cgi脚本实现的。注意,此脚本只在Apache2.x上有效。
1. 配置apache2,开启git-http-backend脚本:
SetEnv GIT_PROJECT_ROOT /my_repos_root_path SetEnv GIT_HTTP_EXPORT_ALL ScriptAlias /repos/ /usr/lib/git-core/git-http-backend/
现在git clone http://yourhost/repos/xxx.git应该可以检出你的xxx代码库了。
但是,处于安全考虑,没有授权方式的访问不提供上传(push)服务,所以暂时还不能push你的更新到代码库中。
2. 配置授权,开启push服务。这里以basic授权为例:
<Location /repos/> AuthType Basic AuthName "Git Access" AuthUserFile /opt/access/git.passwd Require valid-user </Location>
当然,你也可以配置成匿名clone,授权push的工作方式,这里就不举例了,参考这里。