Mercurial merge ---为什么我为其他用户的更改提供提交消息?

时间:2012-12-28 14:15:06

标签: mercurial merge

我认为我“得到”Mecurial的大部分内容,但有一件让我感到困扰的事情是,当我在其他文件中执行其他人所做的更改时,对于我来说,如何提供提交消息?这些用户在将相应的变更集推送到“服务器”时已经有机会提供提交消息。

据我所知,没有办法只推动我做出更改的树的一部分,所以当其他人对树中不相关的部分中的不相关文件进行更改时,我有一个需要的变更集要推送,我必须“拉”,“合并”,然后“提交”,我提供描述他们的变化的消息,理论上已经由他们的提交消息描述的变化。

我可能不理解某事。有没有更好的方法来处理我的情况:

 ~$ ## Make some changes
 ~$ hg ci -m 'blah'
 ~$ ## Attempt to "push" and get "abort: push creates new remote head"
 ~$ hg pull
 ~$ hg merge # <- totally unrelated files updated here
 ~$ hg ci -m "SOMEONE ELSE'S FILES CHANGED....!"
 ~$ hg push

...

3 个答案:

答案 0 :(得分:2)

必须才能理解合并价值以及合并后的操作

变更集的提交消息(通常)是“此变更集所做内容的简短描述”。对于mergeset,“完成”是“合并来自...的更改”,并且从此合并集的第二个父级分支提交消息将通知,确实(哪些更改)已合并

答案 1 :(得分:1)

合并是您评论的更改,而不是您提取的更改集。所以在你的例子中:

~$ ## Make some changes
~$ hg ci -m 'blah'
~$ ## Attempt to "push" and get "abort: push creates new remote head"
~$ hg pull
~$ hg merge 
~$ hg ci -m "Merged with changes on the Flibble-floo server"
~$ hg push

请记住,您可以直接从其他开发人员或不同分支机构中提取。该消息应描述您已完成的合并。

~$ hg pull bob
~$ hg merge 
~$ hg ci -m "Merged with Bob's changes"

答案 2 :(得分:0)

了解merge是什么很重要。您的提交正在合并两个不同的分支,而不是提交该用户的代码,因此更合适的提交消息将涉及单词“merge”。

现在我会告诉你一个更好的方法。

在这种情况下,如果您从未推送过您想要推送的代码,那么它可能更适合rebase。您的案例完全涵盖在A common case中的该文档中。

~$ ## Make some changes
~$ hg ci -m 'blah'
~$ ## Attempt to "push" and get "abort: push creates new remote head"
~$ hg pull --rebase  # Or alternately, `hg pull; hg rebase`
~$ hg push

然后你最终得到线性历史,这通常更好(可行)。

请注意,如上所述,您需要先在configuration中启用扩展程序:

[extensions]
rebase =
相关问题