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

时间:2010-02-15 10:52:00

标签: svn tortoisesvn directory undelete

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

我们使用TortoiseSVN作为我们的客户端,我认为当我进入repo浏览器并显示日志时,会出现类似于“从此版本中还原更改”的内容,类似于您在工作副本上的类似对话框中看到的内容。但那里没有这样的命令......

6 个答案:

答案 0 :(得分:110)

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

在资源库浏览器中,单击标有HEAD(位于右上角)的按钮以显示您的文件夹仍然存在的修订,然后右键单击该文件夹并选择“复制到...”并输入您希望重新创建文件夹的路径(可能与文本框中已有的路径相同)。

答案 1 :(得分:73)

对于命令行爱好者:

  • 首先找到您的删除发生的修订号:

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    

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

  • 从修订版减1

    复制文件夹
    svn copy http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder@998 http://svnserver/path/to/folderContainingDeletedFolder/deletedFolder -m "undeleted folder"
    

瞧,你已经完成了!

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

    svn copy http://svnserver/project/tags@998 http://svnserver/project/tags -m "undeleted folder"

答案 2 :(得分:11)

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

svn merge -r R1:R2

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

答案 3 :(得分:7)

您需要执行反向合并

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

答案 4 :(得分:3)

继raudi的回答之后,在本次修订后对我有用。

某些svn客户端可能需要使用-r revision参数指定的修订号,而不是在文件夹后使用@,如下所示:

svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"

答案 5 :(得分:2)

转到Repository Browser的{​​{1}},右键点击存在已删除文件夹的父文件夹。现在,父文件夹的repository,并选择您提交删除操作的先前版本。您将有一个列表并右键单击修订信息中的文件夹,然后选择Show Log

您已完成