我需要将两个类的功能合并为一个,但我想知道我是否可以结合他们的更改历史记录?
这两个类都包含许多以前的更改,因此我希望将更改历史记录保存在一个位置以供参考。我可以在组合类中发表评论,但在IDE中,获取已删除文件的历史记录并不容易。
答案 0 :(得分:17)
为此,您需要将合并的文件记录为合并变更集。
假设changeset 0是你想要合并到文件C中的文件A和B的当前头。为此,将文件A重命名为C并提交为变更集1,然后更新回变更集0,重命名文件B到C并将其作为变更集2提交。接下来,合并这两个变更集,组合它们的内容并删除剩余的文件A和B.这会导致C的文件历史记录从A和B都下降。最后你可以将文件C重命名为A。
生成的树看起来如下:
0 [A, B] --- 1 [A, C] \
\ \
\ 2 [C, B] --- 3 [C] --- 4 [A]
命令行流示例:
$ hg init
$ echo a > a
$ echo b > b
$ hg add a b
$ hg commit -m "add files a and b"
$ hg mv a c
$ hg commit -m "rename a to c"
$ hg update 0
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ hg mv b c
$ hg commit -m "rename b to c"
created new head
$ hg merge
merging c
warning: conflicts during merge.
merging c incomplete! (edit conflicts, then use 'hg resolve --mark')
0 files updated, 0 files merged, 1 files removed, 1 files unresolved
use 'hg resolve' to retry unresolved file merges or 'hg update -C .' to abandon
$ ls
c c.orig
$ cat c
<<<<<<< local
b
=======
a
>>>>>>> other
$ echo ab > c
$ hg resolve --mark c
$ hg commit -m "merge a and b into c"
$ hg mv c a
$ hg commit -m "rename c back to a"
如果您现在键入hg log -f a
,您会注意到两个文件的历史记录都已显示。