水银:执行“汞拉-u”前“汞承诺”(Mercurial: enforce “hg pull -u”

2019-09-16 13:37发布

我在有些情况下需要强制执行的Mercurial用户已运行hg pull -u之前的任何hg commit可以允许的,也就是说, hg pull将意味着进入队列为空-和另外我也希望这个人是使用头版本的分支。

我怎样才能建立这样的限制?

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

Answer 1:

You could ask your developers to install

[hooks]
pre-commit = hg pull -u

in their config files (it should probably be installed in the per-repository .hg/hgrc file since this workflow is repository specific).

This makes Mercurial a little Subversion-like: your developers will only have one outstanding changeset. But note as soon as someone pushes to the server, hg pull -u cannot update to the new branch tip since it will cross branches (topological branches) to do so. So a proper merge will be needed at that point (or a rebase, see hg pull --rebase).



Answer 2:

通常情况下水银不会让你推一个开放的头到服务器,而不使用-f标志(力)。 你可以写一个钩自动拉,但由于服务器无法执行服务器端不知道你有什么。 有对善变的有关此方案的网站上的文章: https://www.mercurial-scm.org/wiki/TipsAndTricks?highlight=%28heads%29#Prevent_a_push_that_would_create_multiple_heads



Answer 3:

正如亚当说,也许你真正需要做的是防止多头(每个分支)。 这是我们做什么,使用从NetBeans中的“forbid_2head”钩(此处链接https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads )

其结果是,钩子可防止在一个分支(因此一个上的匿名/默认分支加一各名为分支机构)创建多个磁头任何推。 这有效地强制拉之前提交,因为你要拉,让当地的两个头,然后合并或重订其删除。

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



文章来源: Mercurial: enforce “hg pull -u” before “hg commit”