0

我在http://foo.com/svn/myfoo有远程存储库。
我有 checkout myfoo repos 并执行svn delete directoryA/ directoryB/并提交它。

“svn delete”是否也在我的远程存储库中永久删除了这些东西?将来是否可以再次恢复目录A/目录B/?

谢谢你。

4

2 回答 2

3

所有文件都保存在 SVN 历史记录中,并且没有任何内容被永久删除。(其实如果你真的想永久删除SVN上的东西,那是相当麻烦的)。

恢复的方法很简单,只需进行反向合并,或从旧版本复制已删除的文件。

SVN 的书中有很好的描述

于 2013-07-17T03:08:23.210 回答
1

Subversion 永远不会永久删除任何内容。这是它最大的力量,也是它最大的弱点。不,对不起,我在想一些漫威漫画人物。

仅从树头的svn delete最新版本中删除信息。如果您在删除之前从修订版中复制信息,则可以取回信息。

首先,搜索通过 a 删除的信息svn log

$ svn log -v 
------------------------------------------------------------------------
r2 | david | 2013-07-16 23:14:23 -0400 (Tue, 16 Jul 2013) | 1 line
Changed paths:
   D /trunk/foo

foo我在修订 #2 中删除了。我要做的是从 Revision #1 复制它:

$ svn cp -r1 svn://localhost/trunk/foo@1 .
A         foo
david@DaveBook.local:~/temp/work/trunk

现在,foo 回来了。我会做一个承诺:

$ svn commit -m"Undeleted 'foo'"

而且,现在我的结果:

$ svn log -v
------------------------------------------------------------------------
r3 | david | 2013-07-16 23:17:19 -0400 (Tue, 16 Jul 2013) | 1 line
Changed paths:
   A /trunk/foo (from /trunk/foo:1)

Undeleted 'foo'

因此,不会永久删除任何内容。顺便说一句,反向合并会给我类似的结果:

$ svn merge -c -2 svn://localhost/trunk/foo

这反转了 Change #2,它将取消删除foo和撤消我所做的任何其他事情。

于 2013-07-17T03:19:28.283 回答