在某些情况下,我需要强制要求Mercurial用户在允许任何hg commit
之前运行hg pull -u
,即hg pull
将意味着传入队列为空,并且我还希望该人使用分支的最新版本。
我如何设置这样的限制?
(我完全意识到这与DVCS设计核心的部分相违背)
在某些情况下,我需要强制要求Mercurial用户在允许任何hg commit
之前运行hg pull -u
,即hg pull
将意味着传入队列为空,并且我还希望该人使用分支的最新版本。
我如何设置这样的限制?
(我完全意识到这与DVCS设计核心的部分相违背)
[hooks]
pre-commit = hg pull -u
.hg/hgrc
文件中,因为这个工作流是仓库特定的),这使得Mercurial有点像Subversion:您的开发人员只会有一个未处理的变更集。但请注意,一旦有人推送到服务器上,hg pull -u
不能更新到新分支提示,因为它将跨越分支(拓扑分支)。因此,在那一点上需要进行适当的合并(或rebase,参见hg pull --rebase
)。正如Adam所说,也许你真正需要做的是防止多个头(每个分支)。这就是我们使用Netbeans中的“forbid_2head”钩子来实现的(从这里链接https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads)
结果是该钩子会阻止在分支上创建多个头的任何推送(因此匿名/默认分支上有一个,每个命名分支上有一个)。这有效地强制在提交之前进行拉取,因为您必须拉取,将两个头本地获取,然后合并或变基以删除它。
请注意,该钩子位于服务器/主存储库上