我尝试使用post-receive和post-update来:
cd "/home/servers/a"
git pull
exit但似乎不起作用。我认为这可能是因为post-receive和post-update不是在服务器收到推送后触发的,也可能是git pull要在服务器上成功运行仍然需要输入密码(在这种情况下,我如何在脚本文件中保存密码)。
发布于 2018-07-26 04:57:46
确保脚本是可执行的(在您的remote_repo.git/hooks中)..。并执行:为此,一个简单的回显“测试”就足够了。
然后,在执行git pull时,指定工作树和git-dir。
#!/bin/bash
cd "/home/servers/a"
echo "pulling in $(pwd)"
git --work-tree=/home/servers/a --git-dir=/home/servers/a/.git pull不需要exit。
拉应该不需要密码,因为该回购的远程来源应该是您刚刚推送到的回购的相对路径:
cd "/home/servers/a"
git remote -v你应该看看/path/to/remote_repo.git。
对于根用户管理的路径,一个可能的解决方案是,在钩子文件中使用sudo git --work-tree=/home/servers/a --git-dir=/home/servers/a/.git pull修改/etc/sudoers之后:
dev ALL=(ALL) NOPASSWD: git(如“Allow certain guests to execute certain commands”所述)
如果git位于根$PATH中,这将有效。
https://stackoverflow.com/questions/51531248
复制相似问题