搭建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/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的工作方式,这里就不举例了,参考这里

 

 

 

你可能感兴趣的:(Git Http,Git服务器)