在这里使用VisualSVN和TortoiseSVN。
我已重命名我的文件。我注意到添加和删除对我来说意味着历史记录可能会被删除?
在Subversion中重命名文件而不丢失历史记录的最佳方法是什么?
答案 0 :(得分:19)
历史记录不会被删除,但您将丢失历史记录,因为它似乎是两个不相关的文件。
如果要对文件或文件夹进行简单的就地重命名,请使用上下文菜单→重命名...输入项目的新名称,您就完成了。
修复文件重命名
有时你友好的IDE会为你重命名文件,作为重构练习的一部分,当然它不会告诉Subversion。如果您尝试提交更改, Subversion会将旧文件名视为缺失,将新文件名视为未版本控制的文件。您可以检查新文件名以将其添加进去,但随后您将丢失历史记录跟踪,因为Subversion不知道这些文件是相关的。
更好的方法是通知Subversion此更改实际上是重命名,您可以在“提交和检查修改”对话框中执行此操作。 只需选择旧名称(缺失)和新名称(无版本),然后使用上下文菜单→修复移动将两个文件配对为重命名。
涵盖了许多其他案例。
<强>更新强>
当Subversion不知道它是重命名时,历史就会丢失,如下所示:
要保留文件历史记录,您需要使用上下文菜单(或命令行)中的重命名选项。 IF 您已经重命名了该文件:
因此,要恢复,在提交对话框中添加(+)表示将保留历史记录,添加表示丢失历史记录。在这两种情况下,旧文件名都将显示为已删除。
更新2
当我说历史丢失时,请理解以前的信息仍然存在,但它不会出现在当前文件名的日志中,你必须手动跟踪它(这不是一件令人愉快的事情做)。
答案 1 :(得分:10)
右键单击文件&gt; TortoiseSVN&gt;重命名。
答案 2 :(得分:5)
通过TortoiseSVN上下文菜单重命名不会删除历史记录。如果要查看重命名之前的更改,请确保在查看更改日志时不使用--stop-on-copy标志:
svn log -v -r 0:N --limit 100 [--stop-on-copy] PATH
or
svn log -v -r M:N [--stop-on-copy] PATH
见这里供参考: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-cli-main.html
答案 3 :(得分:3)
文件的历史记录不会被删除。以前的提交不会受到影响。但是,您可以使用svn move
正确移动文件。
答案 4 :(得分:1)
对于移动和重命名等文件操作,我通常更喜欢使用TortoiseSVN Repo Browser,然后使用本地SVN更新。当然,如果您希望立即将操作提交到存储库,那么这是唯一合适的。
答案 5 :(得分:0)
删除并添加历史记录是在Subversion中重命名文件时要发生的事情。历史不会丢失。
VisualSvn和AnkhSvn都从Visual Studio中捕获正在重命名文件的事件,并做正确的事。