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

yin*_*ers 5 svn tortoisesvn

在保留历史记录的同时在SVN中重命名文件时遇到了一些麻烦。

使用了这个线程,但是我敢肯定我只是做了一个新文件,并删除了旧的文件 ...(如何使用svn重命名文件?

然后,按照注释,我确实创建了一个具有所需新文件名的新文件。

touch newfilename
svn rm newfilename --force
svn mv oldfilename newfilename
Run Code Online (Sandbox Code Playgroud)

这给了我:

A    newfilename
D    oldfilename
Run Code Online (Sandbox Code Playgroud)

使用svnX 0.9.13

Mar*_*aio 7

由于您tortoisesvn的问题中有标签,这是使用 TortoiseSVN 1.9.7 的方法:

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

  2. 打开的 Repo 浏览器窗口中,右键单击要重命名的文件并选择“复制到...”

  3. 出现一个对话框,要求您输入新文件名(文件显示为完整路径),不要更改路径,只需更改文件名,然后单击“确定”。

  4. 仍然在 Repo 浏览器窗口中,右键单击旧文件并选择“删除”

完成后,文件被重命名并保留其所有历史记录。

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


alr*_*roc 6

Subversion中的重命名实现为具有历史记录的副本(用于创建新文件)加上删除项(删除原始文件)。

如果您运行svn status,则应该看到状态newfilenameA +,表明newfilename已添加,但是历史记录也随之而来。

如果看到了,那么说明您做对了,您可以提交更改。我建议在目录级别提交,不要提交单个文件-这样,您的重命名操作将在单个修订版中捕获。


小智 5

如果执行此操作,则可以轻松重命名SVN文件并保留其历史记录。

svn move oldfilename newfilename
svn status
D      oldfilename
A +    newfilename
Run Code Online (Sandbox Code Playgroud)

如果看到此消息,则将保留文件更改历史记录。