我难以确保部署存储库只更新中央Mercurial服务器上的特定分支。
具体来说,我需要确保任何对部署存储库进行更改的人都在做等同于
的操作hg pull -b deployment <central-repo-url>
而不是
hg pull <central-repo-url>
我认为我需要使用pre-pull
钩子,但我不知道该怎么做。
答案 0 :(得分:3)
此外,技术相同,但用户友好的方式;
ACL extension,您可以在其中为工作流程定义[acl.deny.branches]和[acl.allow.branches]
答案 1 :(得分:2)
最简单的方法是在该存储库的hgrc中定义alias,将pull
定义为pull -b deployment
。然后,任何拉动的尝试都会做你想要的。但是,以这种方式将其搞砸是非常容易的,这种方式会导致无限循环。
我建议pretxnchangegroup
hook。这使您可以检查正在导入的更改集,如果您不喜欢它们,则拒绝它们。我怀疑您要强制执行的规则是提示应始终位于部署分支上(更改组可能会将更改集拖入已合并到部署中的其他分支,但提示应始终来自部署)。这将是一个钩子:
[hooks]
pretxncommit.deployment = hg log -r tip --template '{branch}\n' | grep '^deployment$'