如何在Subversion/TortoiseSVN中"取消删除"已删除的文件夹?

Bor*_*ard 96 svn directory tortoisesvn undelete

我们不小心从Subversion存储库中删除了'tags'文件夹,我们只打算删除一个特定的标记.获取'tags'文件夹的最简单方法是什么?

我们使用TortoiseSVN作为我们的客户端,我认为当我进入repo浏览器并显示日志时,会有类似于"恢复此修订版本"的内容,类似于您在工作副本上的类似对话框中看到的内容.但那里没有这样的指挥......

Mik*_*erg 113

只需从早期版本中复制已删除的文件夹即可.

在Repository Browser中,单击标有HEAD(位于右上角)的按钮以显示您的文件夹仍然存在的修订,然后右键单击该文件夹并选择"Copy to ..."并输入您的路径想要重新创建文件夹(可能与文本框中已有的路径相同).

  • 这样做的方式确实保留了历史.我尝试过这个. (15认同)
  • 很棒的提示,谢谢.一个TortoiseSVN陷阱 - 在"复制到..."对话框中,我不得不将路径从'example.com/svn/tags'更改为'tags1',然后返回OK按钮以启用. (4认同)
  • 它确实保留了历史,也做到了. (3认同)
  • 这可能适用于标签,但不应该取消删除任何其他文件夹,因为您将丢失历史记录 (2认同)

rau*_*udi 75

对于命令行爱好者:

假设您发现该目录已在修订版999中删除(顺便说一下:您可能会发现使用svn repo浏览器更容易找到修订号)

  • 从修订版减1复制文件夹

    svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
    
    Run Code Online (Sandbox Code Playgroud)

瞧,你已经完成了!

在你的情况下,这可能是:

    svn copy http://svnserver/project/tags@998 http://svnserver/project/tags -m "undeleted folder"
Run Code Online (Sandbox Code Playgroud)


小智 11

大多数答案都会在一定程度上起作用,但正确答案是丹尼尔的答案.做反向合并.这样你就可以保留版本历史.

svn merge -r R1:R2

其中R1是您所在的版本,R2是包含已删除文件/文件夹的修订版.

  • 使用`svn copy`不会丢失任何历史记录. (2认同)
  • 这样无法还原所有已删除的文件/文件夹吗?如果我只想还原一个特定的已删除文件夹而不还原其他已删除的文件夹,是否可以使用? (2认同)

Dan*_*iel 8

您需要进行反向合并.

有关如何操作的详细信息(以及您希望或需要使用SVN的其他任何内容),官方书籍可在线获取.