如何告诉SVN文件是否被其他工具重命名?

时间:2012-09-07 02:35:39

标签: svn rename

我正在使用Subversion和一些由另一个应用程序管理的文件。我想重命名文件,但重命名必须在应用程序内完成,以便正确更新自己的元数据。这意味着我不能简单地使用SVN的rename命令 - 应用程序的元数据将变得不一致。

那么我怎么能告诉SVN该应用程序已经重命名了工作副本中的文件,以便它以与rename命令相同的方式保存历史记录?

4 个答案:

答案 0 :(得分:7)

您没有指定您的环境,但如果您使用的是Windows TortoiseSVN为此提供了一个鲜为人知且非常优雅的解决方案。假设您有一个文件SuiteSetup.cs,您在应用程序中重命名为SuiteSetup-Rev2.cs。

在TortoiseSVN上下文菜单中的提交检查修改对话框中,选择旧名称(显示missing状态)和新名称(显示non-versioned状态)然后打开上下文菜单并选择修复移动(参考:Repairing File Renames)。如图所示,TortoiseSVN执行所有簿记更正,将这些更改转换为链接的删除 - 添加对,重命名或移动的方式应该出现。

[改编自我的TortoiseSVN and Subversion Cookbook, part 2,发布于Simple-Talk.com。在撰写本文时,第8部分即将出版。]

repairing a file move

答案 1 :(得分:1)

您可以使用类似

之类的内容模拟“仅限记录”重命名
rename newname oldname
svn rename oldname newname

这将保留您的应用程序可能在文件中所做的任何更改,但允许svn在“oldname”和“newname”的历史记录之间建立连接。

答案 2 :(得分:0)

我认为你不能用现有的SVN做到这一点。 svn rename命令的原因实际上是因为您必须告诉svn重命名是什么,以便它可以准备相应的元数据。

除非svn将其设计更改为“猜测”您的重命名(如git),否则它会提供仅记录重命名命令,该命令仅执行元数据更新(您仍需要弄清楚重命名应用程序实际执行的内容和问题相应的命令)。但是,这个功能都不可用,至少在不久的将来也不太可能发生

答案 3 :(得分:0)

据我所知,SVN cli没有这个功能,但是SmartSVN可以(你选择2个文件并按下Move)。