如何在SVN上重命名文件并保留历史记录?

7

在SVN中重命名文件并保留历史记录时遇到了一些问题。

使用了这个线程,但我很确定我只是创建了一个新文件,然后删除了旧文件... (如何使用svn重命名文件?)

按照评论所说,我确实使用新文件名创建了一个新文件。

touch newfilename
svn rm newfilename --force
svn mv oldfilename newfilename

这给了我:
A    newfilename
D    oldfilename

使用svnX 0.9.13
3个回答

9

如果你的问题中涉及到 tortoisesvn 标签,那么以下是使用 TortoiseSVN 1.9.7 进行重命名的步骤:

  1. 在你的工作副本文件夹中,右键单击要重命名的文件,选择“TortoiseSVN > Repo-browser”。

  2. 在打开的 Repo-browser 窗口中,右键单击要重命名的文件,选择“复制到...”

  3. 会出现一个对话框,询问你新文件的名称(文件显示其完整路径),不要更改路径,只需更改文件名并单击“确定”。

  4. 仍然在 Repo-browser 窗口中,右键单击旧文件,选择“删除”。

完成了,文件已被重命名,并保留了全部历史记录。

  1. 返回到你的工作副本文件夹,右键单击文件夹,选择“TortoiseSVN > 检查修改”,然后单击“检查存储库”按钮,右键单击重命名后的文件并选择“更新”。

8
在Subversion中,重命名文件的实现是通过复制文件并保留历史记录(以创建新文件),再加上删除原始文件来完成的。
如果你运行"svn status"命令,你会看到"newfilename"的状态应该是"A +",这表示"newfilename"已经被添加了,但是历史记录也随之而来。
如果你看到这个状态,那么说明你做得正确了,可以提交你的修改。我建议在目录级别提交,不要提交单个文件,这样你的重命名操作就能够在一个单独的版本中捕获。

1
哇呼!成功了!谢谢! - yingers
谢谢提示!在TortoiseSVN中,如果使用“重命名”上下文选项进行重命名,则更改会标记为added(+),因此历史记录不会丢失。 - Benjamín Valero

8
如果你执行这个操作,你就可以轻松地重命名你的SVN文件并保留其历史记录。
svn move oldfilename newfilename
svn status
D      oldfilename
A +    newfilename

如果您看到这个,那么文件更改历史记录已得以保留。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接