我是Mercurial的新手,主要从事Clearcase。
在我从最新分支机构获取更改之前,我想知道存在的更改以及哪些文件存在冲突。 (主要是看我现在或以后是否应该更新。)
有没有办法在工作副本和另一个工作副本之间进行hg差异?
答案 0 :(得分:8)
您可以使用以下方法检查其他存储库中的更改:
hg incoming path
这基本上与pull
类似,但它实际上并没有拉动。
但实际上,您通常只需拉动,因为拉动传入的更改集不会触及您的工作副本。只有当您update
或merge
时,您的工作副本才会更新,并存在冲突风险。
理想情况下,update
和merge
会有一个选项来进行暂时合并,也就是说,除非存在冲突,否则它会合并,但是此类选项目前还不存在。
将更改提取到您的存储库后,您可以像往常一样使用diff将其与工作副本进行比较。
hg diff -r tip
答案 1 :(得分:2)
有没有办法在工作副本和另一个副本之间进行hg差异?
没有。 diff比较来自repo的两个版本。在你的情况下,你可以盲目拉(获取updatesto repo),但避免自动更新你的工作副本。使用synced repo,您可以在需要时使用hg diff,hg update,hg merge。您也可以不做任何事情并提交您的更改 - 您将只拥有匿名分支,并在repo中添加额外的头部
答案 2 :(得分:2)
首先,您应该在执行任何操作之前提交更改。我从未使用过ClearCase,但我认为它必须像SVN一样工作,如果我错了,请原谅我。 DVCS优于CVCS的最大优势之一是它允许您先提交并决定以后要做什么。这是非常重要的,因为你先整合你的工作,如果事情在合并后开始变得太混乱,你的工作在存储库中是安全的。在更糟糕的情况下,你甚至可以放弃凌乱的合并,重新开始。即使在合并之后,原始作品的版本(在合并之前)将在那里,检查合并是否引入了一些问题非常重要。在SVN中(假设ClearCase类似)它恰恰相反:它不允许在没有更新和合并的情况下提交......我讨厌它!
另一件事,mercurial中的pull命令不会改变工作目录中的任何内容。它只是将更改带到本地存储库。所以,在我的意见中,你应该:
答案 3 :(得分:0)
如果您正在使用TortoiseHG,那么您可以使用下载传入更改集的传入按钮,但您可以选择是否应用它们。