Git 接收后 Hook 不起作用

标签 git curl hudson githooks git-post-receive

我的设置是 Windows XAMPP 服务器,启用了 cURL,并安装了 Git 和 Hudson。 Hudson 每分钟轮询 Git 以查找更改,如果找到更改,它会创建一个构建。我使用这个构建作为我的测试服务器。这很好用。

我想在运行 Hudson 的强制构建功能的中央远程存储库上设置一个接收后 Hook 。

我在中央 Git 存储库的 hooks 目录中创建了一个名为“post-receive”的接收后文件,该文件是从开发人员的本地分支推送到的。他们每个人都推送到中央存储库上自己的分支。我想在每次推送后立即运行接收后构建,而不是让 Hudson 每分钟轮询一次 Git。

当我打开远程服务器的 shell 并在 hooks 文件夹中运行“post-receive”时,它会运行。当人们将其从本地存储库副本推送到中央存储库副本时,它不会被调用。

也许我没有解释清楚,但这就是我对 Git 的理解。

接收后代码是两行:

#!/bin/sh
curl http://myserver.com:8080/hudson/job/myjobname/build?token=mytoken

同样,当我打开一个 shell 并运行它时,它可以工作,但是当有人按下它时,什么也没有发生,直到一分钟或更短的时间过去,Hudson 意识到 Git 已更改,然后它构建。

如果需要,我很乐意澄清。非常感谢任何帮助。

编辑:在玩弄它之后,我觉得可能因为没有更新某些东西而没有执行后接收? git 文档说

It executes on the remote repository once after all the refs have been updated.

这是否意味着如果没有任何更新,它就不会执行?如果是这样,我很确定无论如何事情都会更新,所以它不应该适用。

这是我的过程: 在本地进行编辑。 提交编辑。 从我的 HEAD 推送到名为“mybranch”的远程分支(不是 master 分支,已 checkout ) 这是我希望 Hook 执行的时间点。

最佳答案

请检查您的文件是否具有可执行权限。否则无法执行。 像 rwxr-xr-x 这样的东西应该就足够了。

您可以添加缺少的位

$ chmod +x /path/to/post-receive

关于Git 接收后 Hook 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950800/

相关文章:

git - 如何在远程仓库中找到已删除的分支

Git分支过滤选定的文件

linux - 使用curl或其他bash命令登录Apple开发者控制台

php - 无法 curl 图像。不知道该怎么办

php - 获取最终重定向 URL

git - 压缩和重组提交

bash - 无需登录即可安全检查 bash 中是否存在公共(public) GitHub 存储库?

sonarqube - 如何将 Sonar 插件与 Hudson 一起使用?

hudson - 批量禁用 Jenkins 工作

jenkins - Hudson 构建时趋势插件?