Mercurial:我如何找出我的工作副本和另一个副本之间的区别

时间:2011-11-05 11:31:04

标签: mercurial

我是Mercurial的新手,主要从事Clearcase。

在我从最新分支机构获取更改之前,我想知道存在的更改以及哪些文件存在冲突。 (主要是看我现在或以后是否应该更新。)

有没有办法在工作副本和另一个工作副本之间进行hg差异?

4 个答案:

答案 0 :(得分:8)

您可以使用以下方法检查其他存储库中的更改:

hg incoming path

这基本上与pull类似,但它实际上并没有拉动。

但实际上,您通常只需拉动,因为拉动传入的更改集不会触及您的工作副本。只有当您updatemerge时,您的工作副本才会更新,并存在冲突风险。

理想情况下,updatemerge会有一个选项来进行暂时合并,也就是说,除非存在冲突,否则它会合并,但是此类选项目前还不存在。

将更改提取到您的存储库后,您可以像往常一样使用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命令不会改变工作目录中的任何内容。它只是将更改带到本地存储库。所以,在我的意见中,你应该:

  1. 提交
  2. 拉,工作副本
  3. 不会发生任何事情
  4. 现在,您可以查看日志,比较修订版并决定做什么以及如何做,不会有丢失工作的风险。如果您决定现在不合并,那很好,您不必仅仅因为您提取其他修订而合并(尽管建议的做法是经常合并以避免令人头疼的合并非常不同的修订)

答案 3 :(得分:0)

如果您正在使用TortoiseHG,那么您可以使用下载传入更改集的传入按钮,但您可以选择是否应用它们。

See here