繁体   English   中英

未触发 Git 提交后挂钩

[英]Git post-commit hook not triggered

我用标准的 bash 脚本编写了一个名为post-commit文件(没有文件扩展名,可执行文件,由 git 用户拥有)来触发另一个服务器上的 Jenkins 构建,并将它放在我们远程存储库的目录git/ProjectName/hooks中。 当我以用户 git ( ./post-commit ) 手动执行文件时。

Jenkins 构建开始。 但是,当我将某些内容推送到存储库时(并且我看到已在远程存储库的 Git 日志中进行了提交),不会执行post-commit文件(我通过在文件中放置一个 echo 命令来进行检查)。

为什么post-commit文件不执行?

post-commit钩子不会在远程执行,因为没有在远程上进行提交。

您需要的是服务器上的post-receive hook。

https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks

服务器端钩子除了客户端钩子之外,作为系统管理员,您可以使用几个重要的服务器端钩子来为您的项目实施几乎任何类型的策略。 这些脚本在推送到服务器之前和之后运行。
...
收到后
post-receive hook 在整个过程完成后运行,可用于更新其他服务或通知用户。 它采用与 pre-receive hook 相同的 stdin 数据。 示例包括通过电子邮件发送列表、通知持续集成服务器或更新票证跟踪系统- 您甚至可以解析提交消息以查看是否需要打开、修改或关闭任何票证。 此脚本无法停止推送过程,但客户端在完成之前不会断开连接,因此如果您尝试执行任何可能需要很长时间的操作,请务必小心。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM