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

如何";“取消删除”;Subversion/TortoiseSVN中已删除的文件夹?,svn,tortoisesvn,directory,undelete,Svn,Tortoisesvn,Directory,Undelete,我们无意中从Subversion存储库中删除了“tags”文件夹,我们只打算删除一个特定的标记。取回“标签”文件夹的最简单方法是什么 我们使用TortoiseSVN作为我们的客户机,我认为当我转到repo浏览器并显示日志时,会出现类似“从该修订版恢复更改”的内容,类似于您在工作副本的类似对话框中看到的内容。但是那里没有这样的命令…转到存储库的存储库浏览器,右键单击存在已删除文件夹的父文件夹。现在,显示父文件夹的日志,并选择提交删除操作的上一版本。您将有一个列表,右键单击修订信息中的文件夹,然后选

我们无意中从Subversion存储库中删除了“tags”文件夹,我们只打算删除一个特定的标记。取回“标签”文件夹的最简单方法是什么


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

转到
存储库的
存储库浏览器
,右键单击存在已删除文件夹的父文件夹。现在,
显示父文件夹的日志
,并选择提交删除操作的上一版本。您将有一个列表,右键单击修订信息中的文件夹,然后选择
更新到此修订版


您完成了

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

在存储库浏览器中,单击标记为HEAD(右上角)的按钮以向修订版显示您的文件夹仍然存在,然后右键单击该文件夹并选择“复制到…”并在其中输入要重新创建文件夹的路径(可能与文本框中已存在的路径相同)

您需要执行反向合并


有关如何使用SVN的详细信息(以及您可能希望或需要使用SVN进行的其他操作),请参阅官方手册。

对于命令行爱好者:

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

    svn log -v http://svnserver/path/to/folderContainingDeletedFolder
    
假设您发现该目录已在修订版999中删除 (顺便说一句:您可能会发现使用svn repo浏览器更容易找到修订号)

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

瞧,你完了

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

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

接下来是劳迪的答案,在这次修改后,这个答案对我很有用

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

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

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

svn合并-r R1:R2


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

哦,我明白了,它不在“显示日志”对话框中,而是在回购浏览器主窗口中。尽管如此,当我想直接在服务器上解决此问题时,该命令仍将尝试更新我的本地工作副本(您可以想象,签出数百个标记,每个标记包含数千个文件,并不是我想要做的事情)。它对我起到了作用。上下文菜单选项(右键单击)是“从该修订版还原更改”,它将反向合并更改。非常好的提示,谢谢。一只乌龟VN抓到了-在“复制到…”对话框中,我必须将路径从'example.com/svn/tags'更改为'tags1',然后返回,以便启用“确定”按钮。这对于标记可能很好,但不应取消删除任何其他文件夹,因为您将丢失历史。它确实保留了历史,只是也保留了历史。请确保取消选中查看日志时“停止复制/重命名”,因为否则,在您执行还原操作之前,TortoiseSVN不会显示历史记录(显然)…它完全起作用了。节省了我很多时间。谢谢:)谢谢..节省了很多时间这只是节省了我的时间!只是想确认“svn副本”“这种方法实际上保留了所有历史记录,对于递归操作的文件夹,它会还原文件夹和所有子文件夹。在反向合并中,R1应该是您要还原的版本,R2是之前的版本。使用
svn copy
,您不会丢失任何历史记录。对于我们这些不喜欢命令行的人,请参阅:这不会还原所有已删除的文件/文件夹吗?如果我只想还原一个特定的已删除文件夹,而不想还原其他已删除文件夹,此操作是否有效?如果您从仍然存在的文件夹还原,则
-r
将有效。但是,如果您试图直接还原文件夹,则需要使用
@
。否则它会告诉你文件找不到。
svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"