我正在使用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
答案 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