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

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

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

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

在Repository Browser中,点击HEADbutton(在右上angular)显示你的文件夹仍然存在的版本,然后右键单击该文件夹并select“复制到…”并在其中inputpath想要重新创build文件夹(可能是已经在文本框中相同的path)。

对于命令行爱好者来说:

  • 首先find您的删除发生的修订号码:

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

说你发现该目录已被删除在版本999(顺便说一句:你可能会发现更容易find与SVN回购浏览器的版本号)

  • 从版本减去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" 

这些答案大部分将在一定程度上工作,但正确的答案是丹尼尔。 做一个反向合并。 这样你保持版本的历史。

svn merge -r R1:R2

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

你将需要做一个反向合并

有关如何执行此操作的详细信息(以及您希望或需要用SVN完成的其他任何操作),官方书籍可在线获取 。

转到您的repository Repository Browser ,右键单击存在已删除文件夹的父文件 。 现在, Show Log父文件夹的Show Log ,并select您提交删除操作的前一个修订。 您将拥有一个列表并右键单击修订信息中的文件夹,然后selectUpdate to this Revision

你完成了

继这个修改之后,raudi的回答为我工作。

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

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