搭建Git Http服务器
? ? 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/gitwebRedirect 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_pathSetEnv GIT_HTTP_EXPORT_ALLScriptAlias /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.passwdRequire valid-user</Location>
? ?当然,你也可以配置成匿名clone,授权push的工作方式,这里就不举例了,参考这里。
?
?
?