0

我们有我们的主要裸仓库,它有一个钩子,应该将特定分支推送到另一个远程裸仓库。另一个 repo 应该只有一个分支。post-receive 挂钩检查当前提交是否在特定分支上(使用 git rev-parse specific_branch_name),如果是,则执行以下操作:

 git push ssh://git@remote/path/to/repo

现在我们做了一些愚蠢的事情并推送了一个新分支(与特定分支在同一个提交上)。钩子推动了这个,并在另一个遥控器上创建了一个新分支。

现在显然我们需要从另一个远程删除该分支。但是我想知道如何让另一个远程拒绝创建新分支(它应该只有一个特定的分支而没有其他分支)。有没有办法做到这一点?

提前致谢。

4

1 回答 1

0

您可以使用updatehook来实现:

这个钩子由远程存储库上的 git-receive-pack 调用,当在本地存储库上完成 git push 时会发生这种情况。就在更新远程存储库上的 ref 之前,会调用更新挂钩。它的退出状态决定了 ref 更新的成功或失败。

钩子对每个要更新的 ref 执行一次,并接受三个参数:

  • 正在更新的 ref 的名称,
  • 存储在 ref 中的旧对象名称,
  • 以及要存储在 ref 中的新对象名。

更新挂钩的零退出允许更新 ref。以非零状态退出会阻止 git-receive-pack 更新该引用。

只需检查分支名称是否正确,否则拒绝更新。

于 2013-04-19T01:28:01.200 回答