在SVN中保留历史记录时拆分文件

时间:2011-02-15 09:47:37

标签: svn tortoisesvn

在重构期间,我有时必须将一个源文件拆分为两个或更多(例如,当一个类变得如此之大以至于它应该被分成两个类时)。

例如,让A为原始文件,B1和B2为新文件。

是否有可能告诉SVN B1和B2都应该“继承”文件A的完整历史记录,所以当我查看B1和B2的历史记录时,我可以看到它们已经从A中出现了,日志看起来像这样:

A                B1                  B2
- change A3      - change B1.2       - change B2.2
- change A2      - change B1.1       - change B2.2
- change A1      - change A3         - change A3
                 - change A2         - change A2
                 - change A1         - change A1

我知道如何在重命名文件时保留历史记录(如讨论here on SO),但AFAIK只是保持A的历史记录与B1或B2相关联的方式,而不是两者。

目前我在Windows上使用Tortoise SVN 1.6.12。

1 个答案:

答案 0 :(得分:24)

只需制作文件A的2个SVN副本,然后SVN删除文件A.

我刚刚使用新的回购进行了快速测试,看起来效果很好。

  1. 我创建了文件A.txt,其中包含两个类B1和B2,并且提交了文件a.txt
  2. 我将A.txt的SVN副本复制到B1.txt并从B1.txt中删除了B2类声明
  3. 我将A.txt的另一个SVN副本复制到B2.txt并从B2.txt中删除了B1类的声明
  4. 我SVN删除了A.txt
  5. 通信一切,历史看起来很好。