在不丢失历史的情况下进行重构 - TortoiseHG

Refactoring without losing history - TortoiseHG

我做了一些重构,导致我的原始文件的一些内容被拆分成几个其他文件。但是我不想丢失已移动到其他文件的代码的历史记录,但我似乎无法在 Tortoisehg 中找到实现此目的的方法。保留代码历史记录的最佳策略是什么?这甚至可能还是我需要使用原始文件来查看代码的历史记录?

你必须使用控制台,hg copy 在中间。或使用 -A 选项修复错误(未尝试)

简单案例的示例

>hg log
2015-01-13 23:48 +0500  fd3ee8f03c54 [tip]

        * fileA.txt, fileB.txt: new file.
        * file.txt: deleted file.
        * file.txt, fileA.txt, fileB.txt:
        Refactoring

2015-01-13 23:44 +0500  0c2bb611605a

        * .hgignore, file.txt: new file.
        * .hgignore, file.txt:
        Initial state

即:file.txt 在初始变更集中提交,后来分离为 fileA.txtfileB.txt 并删除

在 fd3ee8f03c54 之前,我用

记录了 Mercurial 的副本
>hg cp file.txt fileA.txt
>hg cp file.txt fileB.txt

并记录单个文件,与 -f 选项一起使用,现在知道文件祖先

>hg log -f fileA.txt -T "changeset:\t{rev}:{node|short}\n"
changeset:      1:fd3ee8f03c54
changeset:      0:0c2bb611605a

>hg log -f fileB.txt -T "changeset:\t{rev}:{node|short}\n"
changeset:      1:fd3ee8f03c54
changeset:      0:0c2bb611605a

或者,在 TortoiseHG 中,它们也可以被区分