【问题标题】:Git Hook Post Update File Not RunningGit Hook Post 更新文件未运行
【发布时间】:2016-09-07 10:40:09
【问题描述】:

我在本地设置了一个测试项目;

~/development/test/

我已经初始化了 git,我可以推送到我的远程“测试”仓库。没有问题。

我可以从命令行手动运行我的更新后挂钩;

./post-update

它将启动一个网络浏览器,因为该文件具有以下内容;

#!/bin/bash
echo "Hook is running........."
python -mwebbrowser http://example.com

但是当我执行git push -u origin master 时,文件似乎没有运行。 bash 脚本中的内容似乎都没有发生。

我已按照in this post 所述正确设置了文件权限

还有什么可以尝试的想法吗?

【问题讨论】:

  • 执行git push 后是否有错误消息?
  • @Flows 完全没有错误。

标签: git bash hook


【解决方案1】:

我猜你使用了错误的钩子。 Git hook documentation 说:

post-update远程存储库 上的git-receive-pack 调用, 当在本地存储库上完成 git push 时会发生这种情况。 它 在所有 refs 都已完成后,在远程存储库上执行一次 更新了。

你想要一个不存在的 post-push 钩子。相反,您可以使用 pre-push 钩子。

pre-pushgit push 调用。如果这个钩子以非零值退出 状态,git push 将中止而不推送任何内容。

Web 浏览器将在执行推送之前打开,但如果您在后台任务中打开它(使用字符 &)并返回 0,它应该可以满足您的需求。

你的脚本会变成

#!/bin/bash
echo "Hook is running........."
python -mwebbrowser http://example.com &
exit 0

【讨论】:

  • 啊,这样就行了。虽然,我需要阅读/理解文档,因为我想与人们分享这个钩子,但现在它只在我的本地机器上,对吧?
  • 是的,很难共享一个钩子。您可以在所有开发人员.git/hook 文件夹中创建指向您的钩子的符号链接,或者提交带有钩子和脚本的文件夹hook 以启动以安装它们。但是 AFAIK 没有一种简单的方法可以使用 git 部署钩子。
猜你喜欢
  • 2016-03-07
  • 2013-06-19
  • 2015-07-31
  • 2019-01-23
  • 2011-04-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
相关资源
最近更新 更多