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


96

我们意外地从Subversion存储库中删除了“ tags”文件夹,在该文件夹中我们仅打算删除一个特定的标签。恢复“标签”文件夹的最简单方法是什么?

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

Answers:


115

只需将已删除的文件夹从较早的版本复制回来。

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


4
很好的提示,谢谢。一个TortoiseSVN陷阱-在该“复制到...”对话框中,我不得不将路径从“ example.com/svn/tags”更改为“ tags1”,然后返回以启用“确定”按钮。
Borek Bernard '02

2
这对于标签来说可能是不错的选择,但不应取消删除任何其他文件夹,因为这样会丢失历史记录
slckin 2012年

3
它确实保留了历史,也保留了历史。
acdcjunior 2013年

只需确保在查看日志时取消选中“停止复制/重命名”即可,否则,TortoiseSVN不会在您执行还原操作之前显示历史记录(显然)……
Oli,2016年

它完全有效。节省了我很多时间。谢谢:)
dgupta3091

78

对于命令行爱好者:

  • 首先找到您删除发生的版本号:

    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"

1
谢谢..节省了很多时间
Dharani Kumar

这就节省了我的培根!
axiopisty

只是想确认“ svn复制”方法实际上确实保留了所有历史记录,并且对于文件夹,它以递归方式运行,从而还原了文件夹和所有子文件夹。
WallStProg '18年

11

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

svn merge -r R1:R2

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


1
在反向合并中,R1应该是您要还原的修订,而R2是之前的修订。
arleslie '16

2
您不会错过任何历史svn copy
maxschlepzig

对于不是命令行爱好者的我们,请参阅:tortoisesvn.net/docs/nightly/TortoiseSVN_en/…–
Pascal,

2
这样无法还原所有已删除的文件/文件夹吗?如果我只想还原一个特定的已删除文件夹而不还原其他已删除的文件夹,是否可以使用?
OJ7 '18年

8

您将需要进行反向合并

有关如何执行此操作的详细信息(以及与SVN相关的几乎所有其他操作),可在网上在线获取官方书籍。


3

在此修订后,从拉迪的回答对我有用。

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

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

如果要从仍然存在的文件夹还原,则-r <revision>可以使用。但是,如果您尝试直接还原文件夹,则需要使用@<revision>。否则,它将告诉您找不到文件。
arleslie '16

2

转到Repository Browserrepository,右键单击存在已删除文件夹的父文件。现在,Show Log在父文件夹中,选择提交删除操作的先前版本。您将有一个列表,然后从修订信息中右键单击该文件夹,然后选择Update to this Revision

大功告成


哦,我知道,它不是在“显示日志”对话框中,而是在主存储库浏览器窗口中。仍然,该命令将尝试更新我的本地工作副本,而我想直接在服务器上解决此问题(您可以想象检出数百个标签,每个标签包含数千个文件,这与我想要的不完全一样)去做)。
Borek Bernard

它为我工作。上下文菜单选项(右键单击)为“从此修订版本还原更改”,它将反向合并更改。
hsg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.