【问题标题】:Commit message hook on github在 github 上提交消息挂钩
【发布时间】:2015-03-09 16:36:13
【问题描述】:

我正在尝试在 github 中设置一个我曾经在 STASH 上使用的预接收挂钩。在 STASH 中,我有一个 pre-receive 挂钩,用于强制执行“应包含 JIRA 编号的自定义提交消息”。

现在,我试图了解在 github 上做类似事情的最佳方法是什么。如果我把它分开,它会是:

  • 需要自定义提交消息。
  • 每个提交都应该包含一个现有的 JIRA。
  • 也对任何拉取请求强制执行此操作。

例如:TEST-1 添加第一条提交消息。

这里有人可以帮我吗,怎么办?

【问题讨论】:

    标签: github jira githooks


    【解决方案1】:

    GitHub 仅offers webhooks,允许您收听certain events 并做出反应,包括推送。

    但这仅允许您对推送做出反应(就像接收后挂钩一样),而不是阻止它。

    您可以为该推送事件构建一个侦听器:

    • 检查刚刚推送的最新提交
    • 如果提交未遵循预期的策略,则重置为 HEAD~1 (push --force)

    但是对于最初推送该提交的用户来说,这将是棘手的,以意识到该提交刚刚从 GitHub 存储库中消失。


    更好的解决方案是在服务器中设置一个裸存储库,您可以在其中设置预接收挂钩:如果该提交通过,则后接收挂钩会将其推送到预期的 GitHub 存储库。

    但根据您的团队,可能很难设置每个人都可以访问的存储库。

    【讨论】:

    • 在您的第二个解决方案中,我会要求开发人员推送到不同的存储库,对吗?如果是这样的话,那么我猜开发人员不想从一个仓库克隆并推送到另一个仓库,他们希望我尽快离开 :)。
    • @Jason 不,我可以向你保证,他们不会希望你尽快离开,这是 Git 的分布式特性支持的常见设置。拥有多个遥控器是一个可以利用的功能。
    • 这是一个例子,设置裸仓库是可以的,但是如果有人从某个分支或分叉仓库创建拉取请求,然后将代码直接合并到主仓库怎么办?
    • @Jason fork repo 背后的想法是允许“某人”推送到它,因为他/她无权将任何东西推送到主仓库。所以主仓库是安全的。
    • 如果拉取请求中的消息不正确,我可以在 github 中创建一个钩子来监听拉取请求的创建并拒绝它吗?
    猜你喜欢
    • 2010-12-23
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多