我在有些情况下需要强制执行的Mercurial用户已运行hg pull -u
之前的任何hg commit
可以允许的,也就是说, hg pull
将意味着进入队列为空-和另外我也希望这个人是使用头版本的分支。
我怎样才能建立这样的限制?
(我深知,这违背了DVCS设计的核心部分)
我在有些情况下需要强制执行的Mercurial用户已运行hg pull -u
之前的任何hg commit
可以允许的,也就是说, hg pull
将意味着进入队列为空-和另外我也希望这个人是使用头版本的分支。
我怎样才能建立这样的限制?
(我深知,这违背了DVCS设计的核心部分)
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
).
通常情况下水银不会让你推一个开放的头到服务器,而不使用-f标志(力)。 你可以写一个钩自动拉,但由于服务器无法执行服务器端不知道你有什么。 有对善变的有关此方案的网站上的文章: https://www.mercurial-scm.org/wiki/TipsAndTricks?highlight=%28heads%29#Prevent_a_push_that_would_create_multiple_heads
正如亚当说,也许你真正需要做的是防止多头(每个分支)。 这是我们做什么,使用从NetBeans中的“forbid_2head”钩(此处链接https://www.mercurial-scm.org/wiki/TipsAndTricks#Prevent_a_push_that_would_create_multiple_heads )
其结果是,钩子可防止在一个分支(因此一个上的匿名/默认分支加一各名为分支机构)创建多个磁头任何推。 这有效地强制拉之前提交,因为你要拉,让当地的两个头,然后合并或重订其删除。
注意,钩是在服务器/主回购