【问题标题】:Queueing of git post-receive hooks?git post-receive 钩子排队?
【发布时间】:2014-10-28 12:25:55
【问题描述】:

我希望在git post-receive 上运行自定义脚本,但我想知道如果/当在第一次推送的脚本完成(或失败)之前连续收到多个推送时,git 的行为如何?接收后挂钩是否排队?

示例场景:接收后挂钩触发脚本将更改的文件复制到远程 NFS 共享。该脚本可能:

  • 需要几秒钟以上才能完成
  • 如果 NFS 不可用则失败
  • 网络中断可能会中断传输,导致失败

【问题讨论】:

    标签: git githooks git-post-receive


    【解决方案1】:

    receive-pack 程序是实际运行post-receive 挂钩的程序。 documentation 部分表示:

    请注意,当这个钩子运行时,refname 可能没有 sha1-new。如果另一个用户在 git-receive-pack 更新 ref 之后,但在钩子能够评估它之前修改了 ref,则很容易发生这种情况。建议 hooks 依赖 sha1-new 而不是 refname 的当前值。

    根据来源,在运行 post-receive 钩子之前删除了包锁定文件,这意味着可以在 post-receive 钩子运行时开始其他更新(本地或远程)。

    如果您需要排队或锁定(或两者兼有),则必须自己实现。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-13
      • 1970-01-01
      • 2011-04-15
      • 2012-02-17
      • 2012-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多