如何区分在两者之间重命名的文件的两个修订版,Mercurial不知道重命名?

时间:2012-12-07 20:43:03

标签: mercurial

我意外地重命名了Mercurial之外的文件。当我提交更改时,Mercurial将更改视为两个不相关的文件(即删除和添加)。我需要回过头来对两个版本进行区分,但是当Mercurial将它们视为不同修订版中的两个相应文件时,我不知道该怎么做。我该怎么做来区分文件?

3 个答案:

答案 0 :(得分:2)

修复历史记录:

  • 使用new-filename更新到第一个变更集,将文件保存在WC外
  • 更新为错误替换变更集的父级,正确替换文件(使用重命名跟踪),提交,获得第二个负责人
  • 在新的良好变更集之上重新设置旧匿名分支的所有变更集
  • --close-branch关于错误替换变更集或删除此不需要的变更集或保持非活动头部完整

答案 1 :(得分:2)

您没有说明您使用的操作系统。以下内容适用于Linux上的bash:

diff <(hg cat -r rev1 file1) <(hg cat -r rev2 file2)

如果你想要一个视觉差异,你可以用另一个程序替换差异,如vimdiff

答案 2 :(得分:2)

如果您想要实际修复历史记录以便Mercurial知道重命名(并且可以在将来合并时使用该信息),那么Mercurial上的way to do so上会记录Tips and Tricks page维基。

此处复制的当前内容是为了便于使用(如果以后链接被破坏):

步骤:

  1. 在执行重命名之前将工作目录更新为
  2. 执行一个实际的“hg rename”,它将创建一个新头
  3. 将新头部合并到您进行“手动”重命名的修订版中(不是头版修订版!)
  4. 然后最终将头部修订合并到此合并结果中。
  5. 建议:

    1. 首先制作一个克隆并继续处理,以防万一!
    2. 完成这些步骤后,使用文件比较工具检查原始文件和克隆是否相同
    3. 检查任何已移动文件的文件历史记录以确保其现已恢复
    4. 话虽如此,如果您想要做的只是比较时间点的内容,您绝对可以在不让Mercurial意识到重命名的情况下实现这一点(如Stephen Rasku的回答中所述)。实际上,您可以结合使用“hg cat”和外部比较工具来比较任何文件,而不仅仅是Mercurial所知道的文件。