2011-05-03 64 views
2

我现在用水银从SVN工作....与SVN我从来没有失去任何变更,合并是非常聪明的。在Mercurial的时候,我刚刚从主要的回购仓库中抽出时间,当时我承担了本地更改并覆盖了本地更改。这里的情景......水银更改冲突

与file.php第250行是相同的。本地我添加了3个功能,这是因为我正在使用特定功能。我承诺我的改变,忘了推到DEV。所以在DEV上我也增加了3个新功能。当地的3个功能(尽管是完全不同的)由上DEV 3个功能覆盖...

我似乎无法想到的为什么会这样一个合乎逻辑的理由......

我使用TortoiseHG,而不是命令行。

+2

嘿 - 我使用Mercurial,我从来没有失去一个承诺的变化,虽然它有时看起来像它。如果你的东西被覆盖,你告诉它必须与被合并的分支有关。您可以使用'hg serve'在http:// localhost:8000/graph /中获取本地分支的视图, – faester 2011-05-03 19:37:10

回答

3

您的描述中缺少一个步骤。通过描述,DEV从未看到所谓的丢失功能;它不能覆盖它们。但是,您可以从DEV中获取更改,使得工作分支与DEV相同,而您的本地提交是另一个分支。在这种情况下,您可以通过合并两个分支来恢复它们。使用hg heads来确定是否有另一个未完成(未合并)的分支。 关键步骤是更新,如hg pull -uhg update -c,这会隐藏(但不会损坏)本地提交的作品。

编辑,因为我看到你使用TortoiseHg:

TortoiseHg workbench显示了树相当不错。如我所料,抽拉确实创建了分支,而新的技巧确实是我从单独的存储库中抽取的技巧。工作台显示当前的工作目录(如1+),所以你可以看到它来自哪个分支;尝试选择其他分支并选择“与本地合并”来收集所有更改。

的原因水银对你的哲学,而不是技术不会自动合并的事情。 cvs/svn工作流分支机构正在执行一个管理程序,并且每个对分支机构的提交都必须与中央存储库保持同步;因此所有更新都会合并。 Mercurial和git采用分支应该很容易的方法,并且您可以选择何时以及是否将每个分支连接到任何其他分支,并为分支给出名称是一项单独的任务。 TortoiseHg中的拉对话框可以尝试使用Post Pull设置更新和自动解决合并冲突来更像CVS。

善变维基有an article on Mercurial workflows。特别是,CvsLikePractice或许可以解释分支比一

1

什么水银命令你注意到,在您的本地版本的线条失踪之前运行?

你从DEV做过hg pull吗?

我还没有看到水银之前失去的变更是这样,我想,如果你承诺的一切,你说变化是在文件历史最低的地方。