如何区分重命名的文件的两个修订版本,以及Mercurial不';我不知道改名的事?
我不小心在Mercurial之外重命名了一个文件。当我提交更改时,Mercurial将更改视为两个不相关的文件(即删除和添加)。我需要回去区分这两个版本,但当Mercurial将它们视为跨不同版本的两个各自的文件时,我不知道如何做。如何区分文件?修复历史记录:如何区分重命名的文件的两个修订版本,以及Mercurial不';我不知道改名的事?,mercurial,Mercurial,我不小心在Mercurial之外重命名了一个文件。当我提交更改时,Mercurial将更改视为两个不相关的文件(即删除和添加)。我需要回去区分这两个版本,但当Mercurial将它们视为跨不同版本的两个各自的文件时,我不知道如何做。如何区分文件?修复历史记录: 使用新文件名更新到第一个变更集,将文件保存到WC之外 更新到错误替换变更集的父级,正确替换文件(使用重命名跟踪),提交,获得第二个标头 将旧匿名分支中的所有变更集重新设置为新的好变更集之上的变更集 --关闭错误的替换变更集上的分支,或删
- 使用新文件名更新到第一个变更集,将文件保存到WC之外
- 更新到错误替换变更集的父级,正确替换文件(使用重命名跟踪),提交,获得第二个标头
- 将旧匿名分支中的所有变更集重新设置为新的好变更集之上的变更集
,或删除此不需要的变更集,或保持不活动的标头不变--关闭错误的替换变更集上的分支
- 你没有说你使用的是什么操作系统。以下内容适用于Linux上的bash:
diff <(hg cat -r rev1 file1) <(hg cat -r rev2 file2)
diff如果您想实际修复历史记录,以便Mercurial知道重命名(并且可以在将来的合并中使用该信息,如果需要的话),Mercurial wiki上的上有一个文档
当前内容复制到此处以便于使用(如果链接稍后断开):
步骤:
在重命名之前,将工作目录更新为
做一个实际的“hg重命名”,这将创建一个新的头部
将新头部合并到进行“手动”重命名的版本中(不是头部版本!)
然后,最后将头部修订合并到此合并结果中
忠告:
先做一个克隆然后再做,以防万一李>
完成这些步骤后,使用文件比较工具检查原始文件和克隆文件是否相同
检查任何移动文件的文件历史记录,以确保它现在已恢复
也就是说,如果您只想在某个时间点比较内容,那么您完全可以做到这一点,而不必让Mercurial知道重命名(正如Stephen Rasku在回答中提到的)。事实上,您可以结合使用“hg cat”和外部比较工具来比较任何文件,而不仅仅是Mercurial知道的文件。是的,我也在Linux上!:)我喜欢你的解决方案,因为它更简单、更灵活,尽管折衷是回购历史的完整性。