我在http://foo.com/svn/myfoo有远程存储库
我有结帐myfoo repos并做svn delete directoryA/ directoryB/
并提交它。
“svn delete”是否也在我的远程存储库中永久删除了这些东西?是否有可能在将来再次恢复directoryA / directoryB /?
谢谢。
答案 0 :(得分:3)
所有文件都保存在SVN历史记录中,并且不会永久删除任何内容。 (事实上,如果你真的想在SVN上永久删除某些内容,那就太麻烦了。)
恢复的方法很简单,只需进行反向合并,或从旧版本中复制已删除的文件。
中有详细描述答案 1 :(得分:1)
Subversion永远不会永久删除任何内容。这是它最大的力量和最大的弱点。不,对不起,我在想一些漫威漫画角色。
svn delete
仅从树头的最新版本中删除信息。如果您在删除之前从修订版本中复制了该信息,则可以获取该信息。
首先,搜索通过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
我在修订版#2中删除了foo
。我要做的是从修订版#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
这反转了改变#2,它将取消删除foo
并撤消我做的其他任何事情。