我使用Subversion处理一些由另一个应用程序管理的文件。我想要重命名文件,但重命名必须从应用程序内部完成,以便它正确地更新自己的元数据。这意味着我不能简单地使用SVN的rename命令-应用程序的元数据将变得不一致。
那么,我如何告诉SVN工作副本中的文件已被此应用程序重命名,以便它以与rename命令相同的方式保留历史记录?
发布于 2012-09-07 21:12:11
您可以使用下面的代码来模拟“仅记录”的事实重命名
rename newname oldname
svn rename oldname newname这将保留您的应用程序可能在文件中所做的任何更改,但允许svn在"oldname“和"newname”的历史之间建立连接。
发布于 2012-09-08 06:33:52
您没有指定您的环境,但是如果您使用的是Windows,TortoiseSVN为您提供了一个鲜为人知但相当优雅的解决方案。假设您在应用程序中有一个重命名为SuiteSetup-Rev2.cs的文件SuiteSetup.cs。
在的上下文菜单中,选择旧名称(显示missing状态)和新名称(显示non-versioned状态),然后打开上下文菜单并选择Repair move (参考:Repairing File Renames)。如图所示,TortoiseSVN执行所有的记账更正,以将它们转换为链接的删除-添加对,就像重命名或移动应该出现的方式一样。
[改编自my ,发布在Simple-Talk.com上。在撰写本文时,第8部分即将发布。]

发布于 2012-09-07 11:37:04
我不认为你能用当前的SVN做到这一点。使用svn rename命令的原因实际上是因为您必须告诉svn重命名是关于什么的,以便它可以准备相应的元数据。
除非svn将其设计更改为“猜测”您的重命名(如git),或者它提供了一个仅记录的rename命令,该命令仅在元数据中执行更新(您仍然需要找出您的应用程序实际执行了什么重命名并发出相应的命令)。然而,这两个功能都不可用,而且至少在不久的将来也不太可能发生
https://stackoverflow.com/questions/12310980
复制相似问题