Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当文件发生更改时,如何在github repo中设置钩子?_Git_Github - Fatal编程技术网

当文件发生更改时,如何在github repo中设置钩子?

当文件发生更改时,如何在github repo中设置钩子?,git,github,Git,Github,我的团队使用GitHub托管远程git存储库。 我想通知每个团队成员对特定文件所做的更改。我怎样才能做到这一点 我查看了GitHub事件挂钩,但它们似乎只能在某些事件发生时向给定主机发送HTTP消息,例如。 因此,这种方法需要建立一个过于复杂的消息处理服务 我还研究了git钩子,它们看起来很有前途,但有一定的局限性: 绑定到本地repo,不提交,即需要手动将其添加到远程主机 作为shell脚本编写,即只能执行此主机上允许的操作 通知类型可以是任何类型,但电子邮件可能是最简单的 用例示例:通过

我的团队使用GitHub托管远程git存储库。 我想通知每个团队成员对特定文件所做的更改。我怎样才能做到这一点

我查看了GitHub事件挂钩,但它们似乎只能在某些事件发生时向给定主机发送HTTP消息,例如。 因此,这种方法需要建立一个过于复杂的消息处理服务

我还研究了git钩子,它们看起来很有前途,但有一定的局限性:

  • 绑定到本地repo,不提交,即需要手动将其添加到远程主机
  • 作为shell脚本编写,即只能执行此主机上允许的操作
通知类型可以是任何类型,但电子邮件可能是最简单的

用例示例:通过电子邮件通知每个团队成员,带有错误代码的公共文件已在公共项目的主分支中更新。
如果无法从GitHub repo获取收件人列表,则可以对其进行硬编码。

如果您使用GitHub.com进行托管,则无法安装挂钩;你必须使用webhook。如果您使用的是GitHub Enterprise Server(内部部署版本),那么可以使用
pre-receive
hook,但它们并不适合此用途;您确实需要一个
post receive
hook,因为推送可能会被拒绝,并且您不希望不必要地通知人们


但是,有一个服务允许您将Webhook指向特定的端点,并在您控制的服务器上运行客户端以接收这些钩子。您可以将GitHub Webhook指向那里,然后有一个客户端,当您收到响应时,它会向您想要的任何人发送电子邮件。默认smee客户端代理本地端口,但您可以修改它以运行给定命令。

github仅允许Webhook。您不能将githooks添加到github,因此在这两种情况下,您都需要设置github以外的其他内容。以shell脚本编写本地钩子可以用任何语言编写—C、go、Python、JavaScript,任何语言。