如何在HTTP协议上设置git hook以在远程服务器上自动化开发

时间:2017-07-30 09:27:44

标签: git http nginx automation githooks

我正在使用git进行版本控制,我希望自动化git将任何协作者的所有内容自动推送到远程服务器上,如果我想通过ssh执行此操作,我必须添加所有协作者ssh -key在我的服务器中,但我不想让他们访问服务器,所以我想在HTTP上设置这个git钩子,这样每个人都可以通过HTTP协议推送到远程服务器

到目前为止我所做的是设置了一个git hook,我使用Nginx作为Web服务,我已将裸git存储库放在

/var/www/html/test_repo

我将git遥控器设置在本地计算机上,如下所示:

git remote add test http://ServerIp/test_repo

但它给了我这个错误:

fatal: repository 'http://ServerIp/test_repo/' not found

1 个答案:

答案 0 :(得分:2)

您需要让NGiNX呼叫/usr/lib/git-core/git-http-backend,以便git能够正确响应克隆/拉取命令。

请参阅this answer:最好在网址路径中设置一个文件夹来跟踪git回购。

    listen 80;
    server_name myhostname;
    access_log /var/log/nginx/git.access.log;
    error_log /var/log/nginx/git.error.log;
    gzip off;

    location ~ /git(/.*) {
      ...
    }

因此,即使fastcgi_param GIT_PROJECT_ROOT参数为/var/www/html

,您的git回购网址也会为http://ServerIp/git/test_repo