我在本地设置了一个测试项目;
~/development/test/
我已经在上面初始化了git,我可以把它推送到我的远程"测试"仓库。没有问题。
我可以从命令行手动运行我的更新后钩子;
./post-update
它将启动一个web浏览器,因为该文件有以下内容;
#!/bin/bash
echo "Hook is running........."
python -mwebbrowser http://example.com
但是当我做git push -u origin master
时,文件似乎没有运行。bash脚本中的内容似乎都不会发生。
我已经正确设置了文件权限,正如这篇文章所说的
还有什么可以尝试的吗?
我想你用错钩子了。Git钩子文档说:
post-update被
git-receive-pack
在远程存储库上调用。当在本地存储库上完成git推送时,就会发生这种情况。这在所有引用完成后,在远程存储库上执行一次更新。
你想要一个post-push钩子,但是这个钩子不存在。你可以使用pre-push钩子。
pre-push被
git push
调用。如果钩子以非零值退出状态,git push将不push任何东西而终止。
web浏览器将在执行推送之前打开,但如果你在后台任务(字符&
)上打开它并返回0
,它应该做你正在寻找的。
你的脚本将变成
#!/bin/bash
echo "Hook is running........."
python -mwebbrowser http://example.com &
exit 0