Visual studio 如何告诉TortoiseSVN重命名文件(未删除和重新添加)?

Visual studio 如何告诉TortoiseSVN重命名文件(未删除和重新添加)?,visual-studio,svn,tortoisesvn,visualsvn,Visual Studio,Svn,Tortoisesvn,Visualsvn,在这里使用VisualSVN和OrtoiseSVN 我已经重命名了我的文件。我注意到上面写着“添加和删除”,这对我来说意味着历史可能会被删除 在Subversion中重命名文件而不丢失历史记录的最佳方法是什么?文件的历史记录不会被删除。以前的提交不会受到影响。但是,您可以使用svn move正确移动文件。右键单击文件>TortoiseSVN>重命名。从TortoiseSVN上下文菜单进行重命名不会删除历史记录。如果要查看重命名之前的更改,请确保查看更改日志时不使用--stop on copy标志

在这里使用VisualSVN和OrtoiseSVN

我已经重命名了我的文件。我注意到上面写着“添加和删除”,这对我来说意味着历史可能会被删除


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

文件的历史记录不会被删除。以前的提交不会受到影响。但是,您可以使用
svn move
正确移动文件。

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

从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
请参见此处以供参考:

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

发件人:

如果要对文件或文件夹进行简单的就地重命名,请使用关联菜单→ 重命名。。。输入项目的新名称,即可完成

修复文件重命名

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

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

还包括许多其他案例

更新

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

  • 旧文件名为aa.txt,手动重命名为bb.txt
  • 新文件名bb.txt添加到subversion
  • 在提交对话框中,aa.txt显示为缺失,可以标记为已删除bb.txt显示为已添加
  • 结果是历史记录丢失,上下文菜单中的SVN show log将仅显示bb.txt
要保留文件历史记录,需要使用上下文菜单(或命令行)中的重命名选项如果您已重命名该文件,则:

  • 旧文件名cc.txt将显示为丢失
  • 选中“显示未版本文件”选项以查看标记为未版本的新文件名dd.txt
  • 选择两个文件名并从上下文菜单中选择修复移动,这将导致cc.txt标记为已删除dd.txt标记为已添加(+)
  • 提交后,将保留历史记录,如果取消选中“停止复制/重命名”选项,您将在日志中看到这两个文件名
因此,要继续,在提交对话框中,添加(+)意味着历史将被保留,添加的意味着丢失历史。在这两种情况下,旧文件名都将显示为已删除

更新2


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

在Subversion中重命名文件时,预期会发生删除并添加历史记录的操作。历史并没有消失


VisualSvn和AnkhSvn都从Visual Studio捕获文件重命名的事件,并采取正确的措施。

对于移动和重命名等文件操作,我通常更喜欢使用,然后是本地SVN更新。当然,只有当您希望您的操作立即提交到存储库时,这才合适。

更好的方法是使用支持Subversion的IDE,该IDE将正确重命名文件……更好的方法是使用Git或Mercurial:D,但有时您无法选择IDE和其他使用的工具。@JesperE:he提到他正在使用一个支持Subversion的IDE插件。@Sander Rijken:除非历史记录被保留,然后在提交对话框中看到删除和添加(+),否则右键单击并选择文件上的“显示日志”历史记录后,会出现“停止复制/重命名”复选框选项。一旦我取消选中它,它最终向我显示了该文件的整个历史记录。我很疯狂,因为我用上下文菜单重新命名了它,并且认为它仍然不起作用。非常感谢你!您没有指明是否要使用VisualSvn(即在Visual Studio中)或TortoiseSVN VisualSvn标记对其进行重命名,问题可能表明他已经使用VisualSvn进行了重命名,如果是这种情况,则正确添加(使用历史记录)/删除(这就是Subversion重命名)谢谢@Mike!我们有一个例子,我们的根被重命名了几次,所以看起来手动按url区分是唯一的解决方案。(对于长文件来说,责怪有点痛苦。)在乌龟身上,确保停止复制是不受约束的,这就像一个符咒。然后可以在Show Log中选择开始/结束修订,比较修订,查看文件列表,然后双击以区分。