如何创建一个防止新分支的Mercurial钩子?

3
我有几个从SVN转换而来的存储库,我们希望确保当人们推送到存储库时,他们不能创建额外的分支。在TipsAndTricks wiki页面中有几个钩子可以防止推送多个分支,但我如何构建一个钩子来防止推送新的分支?
看起来正确的做法是比较从修订0:父级到0:尖端的头数,但我似乎找不到这样做的方法。hg heads -r $HG_NODE只显示用户第一次提交后的头数。
5个回答

5

默认情况下,hg push 阻止推送额外的头部(heads),需要使用 -f 标志。您可以编写一个Mercurial扩展程序来忽略该标志,有效地禁用推送新的头部。

话虽如此,我会质疑机械地禁止新头部的智慧。相反,我会训练您的团队在推送之前正确合并,同时仍然允许他们在偶尔有意义的情况下这样做,特别是因为Mercurial已经警告您。


我曾经看到防止多个头部出现被呈现为多个地方的常见钩子。它在维基的技巧和窍门中使用,被Mozilla和NetBeans使用。这似乎是证明它不是一个坏主意的证据。如果我开始一个新项目,我会使用其中之一。但它们不能按照我需要的方式处理我的转换存储库。 - Asa Ayers
训练人们在推送之前合并代码并不能解决问题。总有其他人可能会在你合并和推送之间推送新的内容。 - Kylotan
@Kylotan:然后你会收到警告,表示你正在推送一个新的主分支,hg会建议在推送之前先拉取和合并。你仍然需要使用-f标志。 - tghw

3

1

1

我发现了cheackheads.py的一些限制,请参见http://stackoverflow.com/questions/32402715/merges-between-two-branches-in-two-directions-any-good-reason-or-completely-fo/。 - gavenkoa

0

使用 hg ci -m '关闭分支 feature-x' --close-branch 命令关闭除一个外的所有头,并应用普通的单头钩子。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接