在修订版1中存在一个文件夹。 在修订版2中,文件夹被意外删除并且提交了更改。
我们希望回滚以使该文件夹存在,并保留其历史记录。
在TortoiseSVN docs中,它表示标题为“获取已删除的文件或文件夹”部分中的“方式”。
引用:
获取已删除的文件或文件夹
如果您已删除文件或文件夹并已将该删除操作提交到存储库,那么正常的TortoiseSVN - >还原不能再把它带回来了。但文件或文件夹根本没有丢失。如果您知道修订文件或文件夹已被删除(如果不知道,请使用日志对话框查找)打开存储库浏览器并切换到该修订版。然后选择您删除的文件或文件夹,右键单击并选择[上下文菜单] - > [复制到...]作为该复制操作的目标选择工作副本的路径。
交换机会按照预期将文件检索到我的工作副本中,但是当我右键单击此工作副本时,上下文菜单中没有“复制到”选项。如果我打开repos浏览器,有一个副本到选项,但似乎这只是一个文件的副本。
我觉得解决方案是做一个分支/标记,但是如果我从先前的修订版中尝试这个到存储库中的相同路径,SVN会抛出路径已经存在的错误。
因此,如何恢复TortoiseSVN中的文件夹/文件,同时保留所有历史记录。
TortoiseSVN v1.6.8,Build 19260 - 32 Bit,Subversion 1.6.11,
答案 0 :(得分:6)
进行“反向合并”:
现在应该添加该文件,并保留其以前的所有历史记录。
这会“回滚”包含删除的修订,但会将合并信息添加到目录属性中。 SVN可以通过此元数据跟踪原始文件。在命令行中,您将对删除它的修订版进行向后合并:
svn merge -c -<revision-number> path/containing/file
请注意转号前的连字符(即“否定”修订号nunber)。
答案 1 :(得分:1)
您所描述的“复制到”仅在Repo-Browser中是正确的。这正是你应该恢复文件的方式。另一方面,复制有什么问题?
答案 2 :(得分:1)
存储库浏览器中的“复制到”是正确的。我想你错过了这个事实,这是一个保留历史信息的svn副本。正是你所要求的。
答案 3 :(得分:0)
我认为您可以使用上下文菜单中的“分支/标记...”选项来执行此操作,仅将特定修订指定为源,将主干指定为目标。
AFAIK,它相当于svn copy
命令行。
您也可以从命令行使用svn copy
...