我在http://foo.com/svn/myfoo有远程存储库。
我有 checkout myfoo repos 并执行svn delete directoryA/ directoryB/
并提交它。
“svn delete”是否也在我的远程存储库中永久删除了这些东西?将来是否可以再次恢复目录A/目录B/?
谢谢你。
我在http://foo.com/svn/myfoo有远程存储库。
我有 checkout myfoo repos 并执行svn delete directoryA/ directoryB/
并提交它。
“svn delete”是否也在我的远程存储库中永久删除了这些东西?将来是否可以再次恢复目录A/目录B/?
谢谢你。
所有文件都保存在 SVN 历史记录中,并且没有任何内容被永久删除。(其实如果你真的想永久删除SVN上的东西,那是相当麻烦的)。
恢复的方法很简单,只需进行反向合并,或从旧版本复制已删除的文件。
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
和撤消我所做的任何其他事情。