只读的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.com:8080/gitproject.git
本文主要讲述的还是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.com:8080/gitproject.git