在重构期间丢失文件的SVN历史记录

Mr.*_*Boy 13 svn tortoisesvn

在一些重构过程中,我正在移动文件.显然,SVN将此视为删除文件并创建新文件,因为IDE不会触发SVN重命名/移动操作.但是我认为SVN服务器足够智能来检测它,但事实证明并非如此......反正并非如此.我正在使用Tortoise SVN,我正在取消选中"停止复制/重命名"按钮.

这是预期的吗?有没有办法围绕它?我应该使用Tortoise SVN shell命令移动文件,而不是让IDE执行常规文件移动吗?

另外,如果它不知道,是否可以手动强制SVN将两个文件链接为同一个实体?比如告诉它"/com/john/test.tct与/com/john/test/file.txt相同"?

sbi*_*sbi 25

SVN的方法实际上是让SVN重命名文件(svn move或使用TortoiseSVN的"重命名").但是,如果您必须使用某些外部工具来执行重命名操作,则可以使用TortoiseSVN来修复移动操作.以下将告诉SVN新文件实际上是重命名的旧文件:

  1. 打开"检查修改"窗口.
  2. 标记旧文件名(列为缺失)和新文件名(列为未版本)
  3. 右键单击此选项并选择"修复移动".

注意:我是从内存中输入的.它可能不完全正确.并且可能还有其他方法可以执行此操作(例如在资源管理器中标记文件).

如果你已经丢失了一个你错过它的文件的历史记录,你可以复活旧文件(你svn copy通过将旧版本的版本放入旧版本),将新文件的历史记录合并到其中,然后删除新文件,以及svn move旧文件到新文件的名称.

  • Stefan的链接坏了,我想这是新的链接:http://tortoisesvn.net/repairmoves.html (4认同)