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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mercurial:我如何找出我的工作副本和另一个副本之间的区别相关的知识,希望对你有一定的参考价值。

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

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

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

答案

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

hg incoming path

这基本上就像pull,但它实际上并没有拉动。

但实际上,您通常只需拉动,因为拉动传入的变更集不会触及您的工作副本。只有当你updatemerge你的工作副本得到更新时,才有可能发生冲突。

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

将更改提取到存储库后,您可以像往常一样使用diff将其与工作副本进行比较。

hg diff -r tip
另一答案

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

No. diff比较了repo的两个版本。在你的情况下,你可以盲目拉(获取updatesto repo),但避免自动更新你的工作副本。使用synced repo,您​​可以在需要时使用hg diff,hg update,hg merge。您也可以不做任何事情并提交您的更改 - 您将只拥有匿名分支,并且还可以使用其他头部进行回购

另一答案

首先,您应该在执行任何操作之前提交更改。我从未使用过ClearCase,但我认为它必须像SVN一样工作,如果我错了,请原谅我。 DVCS优于CVCS的最大优势之一是它允许您先提交并决定以后要做什么。这是非常重要的,因为你先整合你的工作,如果事情在合并后开始变得太混乱,你的工作在存储库中是安全的。在更糟糕的情况下,你甚至可以放弃凌乱的合并,重新开始。即使在合并之后,原始作品的版本(在合并之前)将在那里,检查合并是否引入了一些问题非常重要。在SVN(并且假设ClearCase类似)它是相反的:它不允许没有更新和合并的提交......我讨厌它!

另一件事,mercurial中的pull命令不会改变工作目录中的任何内容。它只是将更改带到本地存储库。所以,在我的意见中,你应该:

  1. 承诺
  2. 拉,工作副本不会发生任何事情
  3. 现在,您可以检查日志,比较修订版本,并决定做什么和如何做,没有丢失工作的风险。如果您决定现在不合并,那很好,您不必仅因为您撤销其他修订而合并(尽管推荐的做法是经常合并以避免合并非常不同的修订的头痛)
另一答案

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

See here

以上是关于Mercurial:我如何找出我的工作副本和另一个副本之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

如何在 mercurial TortoiseHg 中从命令行启动工作副本的视觉差异和文件的最后提交

Mercurial:获得分支的精确副本

Mercurial/Meld 中的 3 路合并如何工作?

如何使用TortoiseHg工作台连接到存储库?

如何撤消 Mercurial 中所有添加的文件

如何在 Mercurial 中重复合并分支