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

在SVN中保留历史记录时分割文件,svn,tortoisesvn,Svn,Tortoisesvn,在重构过程中,我有时不得不将一个源文件拆分为两个或多个(例如,当一个类变得太大以至于应该拆分为两个类时) 例如,A是原始文件,B1和B2是新文件 是否可以告诉SVN B1和B2都应该“继承”文件A的完整历史记录,因此当我查看B1和B2的历史记录日志时,我可以看到它们是从A中出现的,日志如下所示: A B1 B2 - change A3 - change B1.2 - change B2.2 - change A

在重构过程中,我有时不得不将一个源文件拆分为两个或多个(例如,当一个类变得太大以至于应该拆分为两个类时)

例如,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
我知道在重命名文件时如何保存历史记录(如前所述),但这只是保存与B1或B2关联的文件的历史记录的一种方法,而不是两者都关联


目前我正在Windows上使用Ortoise SVN 1.6.12

只需制作文件A的两个SVN副本,然后SVN删除文件A即可

我刚刚用一种新的回购协议做了一个快速测试,它似乎工作得很好

  • 我创建了包含B1和B2两个类的文件A.txt,并提交了文件A.txt
  • 我将a.txt复制到了B1.txt,并从B1.txt中删除了类B2的声明
  • 我将A.txt的另一个SVN副本复制到了B2.txt,并从B2.txt中删除了类B1的声明
  • I SVN删除了A.txt
  • 承诺了一切,历史看起来不错

  • 备注:使用OrtoiseSVN制作文件副本最简单的方法是使用右键单击拖动文件。上下文菜单将显示一些选项,如SVN copy和SVN move,可以同时重命名。有没有办法从.Net代码按语法进行SVN copy?我需要自动完成上面的步骤。检测文件中的类并处理它们可以使用Microsoft Roslyn(用于.Net代码)进行语义上的处理。这个问题是时间旅行的发散时间线的隐喻,不是吗,博士?@ACK_stoverflow:你找到我了;-)