日期:2014-05-17  浏览次数:20701 次

git 整合apache

?

SSH协议私服

适合公司内部小型团队使用的是SSH协议

因为这个协议简单、快速、安全,唯一麻烦的就是需要设置主机信任关系(将公钥提交到私服上,以使得私服与自己建立信任关系),这类文章网上很多,这里就不讲述了,可以参考以下链接:

http://bbs.scmlife.com/thread-22143-1-1.html
http://blog.prosight.me/index.php/2009/11/485

同时除了标准的SSH协议外,还可以实现一些基于SSH协议封装的东东,比如SSH+GitShell和Gitosis,都可以简化一些配置管理的工作

?

只读的HTTP协议私服

本文主要讲述的还是HTTP协议私服的搭建,这里我们先不考虑如何提交代码,仅考虑检出(只读)的情况

首先,需要一个apache服务器,这个安装就不说了,假设安装完成的apache服务器在~/local/httpd22位置

然后执行以下语句

$ cd ~/local/httpd22/htdocs
$ mkdir myproject.git
$ cd myproject.git
$ git init --bare

这里需要注意--bare参数,表示是要生成一个"干净"的仓库,仅包含历史代码不包含工作代码。如果是希望初始化一个已存在的代码库,也可以类似如下命令替换最后一行git命令:

$ git clone --bare /path/to/my_project myproject.git

注意这里也使用了--bare参数,表示仅克隆出历史代码

这样完成了一个仓库的初始化,但要客户端可以使用还缺少了一步——配置钩子(hook),执行下面命令:

$ cd ~/local/httpd22/htdocs/myproject.git
$ mv hooks/post-update.sample hooks/post-update
$ chmod a+x hooks/post-update
$ ./hooks/post-update? # 刚刚初始化完成必须手工执行一次

这样Git会在每次有update之后(post update)执行这个钩子(其实际是执行了命令:git update-server-info,可以通过vi hooks/post-update查看)

现在大功告成,客户端可以执行这样的代码来获取项目代码:

$ git clone http://bb-iit-dev05.bb01.baidu.c