首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在服务器端创建git钩子,以便在收到推送后(在需要根权限修改的路径中)进行操作?

如何在服务器端创建git钩子,以便在收到推送后(在需要根权限修改的路径中)进行操作?
EN

Stack Overflow用户
提问于 2018-07-26 04:54:47
回答 1查看 237关注 0票数 2

我尝试使用post-receivepost-update来:

代码语言:javascript
复制
cd "/home/servers/a"
git pull
exit

但似乎不起作用。我认为这可能是因为post-receivepost-update不是在服务器收到推送后触发的,也可能是git pull要在服务器上成功运行仍然需要输入密码(在这种情况下,我如何在脚本文件中保存密码)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-26 04:57:46

确保脚本是可执行的(在您的remote_repo.git/hooks中)..。并执行:为此,一个简单的回显“测试”就足够了。

然后,在执行git pull时,指定工作树和git-dir。

代码语言:javascript
复制
#!/bin/bash
cd "/home/servers/a"
echo "pulling in $(pwd)"
git --work-tree=/home/servers/a --git-dir=/home/servers/a/.git pull

不需要exit

拉应该不需要密码,因为该回购的远程来源应该是您刚刚推送到的回购的相对路径:

代码语言:javascript
复制
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之后:

代码语言:javascript
复制
dev ALL=(ALL) NOPASSWD: git

(如“Allow certain guests to execute certain commands”所述)

如果git位于根$PATH中,这将有效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51531248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档