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

How to rename file on SVN whilst keeping history?

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

使用了这个线程,但我很确定我刚刚创建了一个新文件,并删除了旧文件...(How to rename a file using svn?)

根据评论,我确实用我想要的新文件名创建了一个新文件。

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

哪个给了我:

A    newfilename
D    oldfilename

使用 svnX 0.9.13

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

如果您 运行 svn status,您 应该newfilename 的状态视为 A +,这表明 newfilename 已添加,但随着历史的到来。

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

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

svn move oldfilename newfilename
svn status
D      oldfilename
A +    newfilename

如果您看到此内容,则说明文件更改历史记录已保留。

因为你的问题中有 tortoisesvn 标签,下面是使用 TortoiseSVN 1.9.7 的方法:

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

  2. 在打开的 Repo-browser window 中,右键单击要重命名的文件并 select "Copy to..."

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

  4. 仍然在 Repo 浏览器中 window,右键单击旧文件并 select "Delete"

完成,文件已重命名并保留了所有历史记录。

  1. 回到你的工作副本文件夹,右击文件夹然后select"TortoiseSVN > Check for Modification",然后点击"Check repository"按钮,右击重命名的文件然后select "Update"