2012-04-16 113 views
7

我在某些情况下需要强制Mercurial用户在允许任何hg commit之前运行hg pull -u,即hg pull将意味着传入队列是空 - 而且我还希望这个人使用分支的头版。Mercurial:在“hg commit”之前强制执行“hg pull -u”

我该如何设置这样的限制?

(我深知,这违背了DVCS设计的核心部分)

+0

要求的另一种方式,这是如何实现的服务器触发器来禁止,​​创造多头推。 – 2012-04-16 14:02:11

+0

我不能告诉你如何自动化,但我使用“hg incoming”来检查是否需要拉动。你可能想要使用它。 – 2012-04-16 14:02:37

+4

如果你解释了你正试图解决的问题,而不是你想解决的破解解决方案,那会更好。 – 2012-04-16 14:34:30

回答

3

你可以问你的开发人员安装

[hooks] 
pre-commit = hg pull -u 
在他们的配置文件

(它可能应该因为这种安装在每个仓库.hg/hgrc文件工作流是特定于存储库的)

这使得Mercurial有点像Subversion一样:你的开发者只会有一个突出的变更集。但是请注意,只要有人推送到服务器,hg pull -u无法更新到新的分支提示,因为它将跨越分支(拓扑分支)来执行此操作。所以在这一点上需要适当的合并(或者rebase,见hg pull --rebase)。

1

正如亚当所说,也许你真正需要做的是防止多个头(每个分支)。这是我们所做的,使用Netbeans的'forbid_2head'钩子(从这里链接https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads

结果是钩子阻止任何在分支上创建多个头的推送(所以匿名/默认分支上的一个加每个在命名分支上)。这有效地在提交之前强制拉动,因为你必须拉动,在本地获得两个头,然后合并或重新绑定以将其移除。

注,钩是在服务器/主回购

相关问题