我们不小心从我们的 Subversion 存储库中删除了“标签”文件夹,我们只打算删除一个特定的标签。取回“标签”文件夹的最简单方法是什么?
我们使用 TortoiseSVN 作为我们的客户端,我认为当我转到 repo 浏览器并显示日志时,会出现类似“从该修订版还原更改”之类的内容,类似于您在工作副本的类似对话框中看到的内容。但是那里没有这样的命令......
我们不小心从我们的 Subversion 存储库中删除了“标签”文件夹,我们只打算删除一个特定的标签。取回“标签”文件夹的最简单方法是什么?
我们使用 TortoiseSVN 作为我们的客户端,我认为当我转到 repo 浏览器并显示日志时,会出现类似“从该修订版还原更改”之类的内容,类似于您在工作副本的类似对话框中看到的内容。但是那里没有这样的命令......
只需从早期版本中复制已删除的文件夹即可。
在存储库浏览器中,单击标有 HEAD 的按钮(在右上角)以显示您的文件夹仍然存在的修订版,然后右键单击该文件夹并选择“复制到...”并在那里输入路径希望重新创建文件夹(可能与文本框中已经存在的路径相同)。
对于命令行爱好者:
首先找到发生删除的修订号:
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"
这些答案中的大多数都会在一定程度上起作用,但正确的答案是丹尼尔的。进行反向合并。这样您就可以保留版本历史记录。
svn merge -r R1:R2
其中 R1 是您所在的版本,R2 是包含已删除文件/文件夹的版本。
您将需要进行反向合并。
有关如何做到这一点的详细信息(以及几乎任何其他你想要或需要用 SVN 做的事情),官方书籍可在线获得。
继此修订后对我有用的 raudi 的回答。
一些 svn 客户端可能需要使用 -r 修订参数指定的修订号,而不是在文件夹后使用 @,如下所示:
svn copy svn://svnserver/project/tags svn://svnserver/project/tags **-r 998** -m "undeleted folder"
转到Repository Browser
您的repository
,右键单击已删除文件夹所在的父文件夹。现在,Show Log
在父文件夹中,选择您提交删除操作的上一个修订版。您将有一个列表并右键单击修订信息中的文件夹并选择Update to this Revision
.
你完成了