如何告诉TortoiseSVN重命名的文件被重命名(未删除并重新添加)?

zac*_*ary 12 svn tortoisesvn visualsvn visual-studio

在这里使用VisualSVN和TortoiseSVN.

我已经重命名了我的文件.我注意到它说添加和删除对我来说意味着历史可能会被删除?

在Subversion中重命名文件而不丢失历史记录的最佳方法是什么?

ale*_*rul 19

历史记录不会被删除,但您将丢失历史记录,因为它似乎是两个不相关的文件.

来自TortoiseSVN文档:

如果要对文件或文件夹进行简单的就地重命名,请使用上下文菜单→重命名...输入项目的新名称,您就完成了.

修复文件重命名

有时你友好的IDE会为你重命名文件,作为重构练习的一部分,当然它不会告诉Subversion.如果您尝试提交更改,Subversion将看到旧文件名丢失,新文件名作为无版本文件.您可以检查新文件名以将其添加到其中,但是您将丢失历史记录跟踪,因为Subversion不知道文件是否相关.

更好的方法是通知Subversion这个更改实际上是一个重命名,您可以在Commit和Check for Modifications对话框中执行此操作.只需选择旧名称(缺失)和新名称(无版本),然后使用上下文菜单→修复移动将两个文件配对为重命名.

涵盖了许多其他案例.

更新

当Subversion不知道它是重命名时,历史就会丢失,如下所示:

  • 旧文件名是aa.txt,并且手动重命名为bb.txt
  • 新文件名bb.txt被添加到subversion中
  • 在提交对话框中,aa.txt显示为缺失,可以标记为已删除,并且bb.txt显示为已添加
  • 结果是历史丢失,SVN显示上下文菜单中的日志将仅显示bb.txt

要保留文件历史记录,您需要使用上下文菜单(或命令行)中的" 重命名"选项.如果您已经重命名了该文件,那么:

  • 旧文件名cc.txt将显示为缺失
  • 选中Show unversioned files选项以查看新文件名dd.txt,该文件名被标记为非版本化
  • 选择两个文件名,然后从上下文菜单中选择修复移动,这会导致cc.txt被标记为已删除,dd.txt被标记为已添加(+)
  • 提交后,将保留历史记录,如果取消选中" 复制/重命名时停止"选项,则在日志中将看到两个文件名.

因此,要恢复,在提交对话框中添加(+)表示将保留历史记录,添加意味着丢失历史记录.在这两种情况下,旧文件名都将显示为已删除.

更新2

当我说历史丢失时,请理解以前的信息仍然存在,但它不会出现在当前文件名的日志中,你必须手动跟踪它(这不是一件令人愉快的事情) .

  • 更好的方法是使用Subversion-aware IDE,它将正确地重命名文件...... (3认同)

Fit*_*aki 10

右键单击文件> TortoiseSVN>重命名.

  • visualsvn标签和问题可能表明他已经使用visualsvn重命名,如果是这样的话,它被正确添加(有历史记录)/删除(这是Subversion重命名的内容) (2认同)

Mik*_*rov 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
Run Code Online (Sandbox Code Playgroud)

请参阅此处以供参考:http: //tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-cli-main.html