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

Doc*_*own 16 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
Run Code Online (Sandbox Code Playgroud)

我知道如何让历史时,我重命名文件(如讨论上所以这里),但据我所知,这只是保持历史的方式与一个或者B1或B2,不与两者都相关.

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

Oth*_*ide 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. 通信一切,历史看起来很好.

  • 备注:使用TortoiseSVN制作文件副本最容易通过右键单击拖动文件来完成.上下文菜单将显示一些选项,如SVN复制和SVN移动,可以同时重命名. (7认同)