2011-02-15 166 views
14

在重构期间,我有时必须将一个源文件拆分为两个或更多(例如,当类变得如此之大以至于应该拆分为两个类时)。在SVN中保留历史记录的同时拆分文件

例如,让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),但据我所知,这只是保持与A相关的历史的方式要么B1或B2,不是两者。

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

+3

这个问题是时间旅行的分歧时间表的比喻,不是吗,Doc? – 2012-03-21 18:12:13

+0

@ACK_stoverflow:you got me ;-) – 2012-03-21 18:15:12

回答

22

只是使文件A的2个SVN副本,然后SVN删除文件A.

我刚刚作出了一个快速测试一个新的回购,似乎很好地工作。

  1. 我创建的文件a.txt中有两个班B1和B2内,并承诺文件a.txt中
  2. 我做A.TXT的SVN副本B1.txt和B1删除B2级的声明.TXT
  3. 我做A.TXT的另一个SVN副本B2.txt和B2.txt
  4. 删除类B1的声明
  5. 我SVN删除A.TXT
  6. COMMITED一切,历史看起来不错。
相关问题