2013-09-22 278 views
1

当寻找SVN还原命令的解释,我看到了如下的解释:需要澄清SVN恢复

此子命令不需要网络接入,并解决任何 冲突状态。但是,它不会恢复已删除的目录。

我想知道,为什么它不需要网络访问,以及为什么它不能恢复已删除的目录。

+2

当你说“我看到下面的解释”时,通常会提供一个链接来帮助他人阅读你所指的内容,并确保它是一个值得信赖的来源,而且你没有误解任何东西。 – alroc

回答

1

svn revert不需要网络访问,因为每个工作副本都存储每个文件的“原始”副本,因为它是在上次更新时从存储库下载的。因此revert将该文件复制到您的工作副本中。

至于删除的目录,这可能不再是真实的。在1.7之前的版本中,每个目录可以被当作一个独立的工作副本,因此它可能无法恢复那些没有原始副本的目录。

1

svn.svn文件夹中保存有关工作副本的信息,并使用它在工作副本上执行一些管理任务,而无需访问资源库即通过网络。如果你浏览这些目录,你会发现一个本地数据库文件和一堆.svn-base文件的束缚子目录。这些反映了您上次执行svn updatesvn checkout时工作副本的状态。因此,如果您在工作副本中更改文件svn可以根据相应的本地保存的.svn-base文件来区分差异,从而可以恢复更改。

有关目录结构的信息不会保存。如果要恢复目录上的更改,最简单的方法是从该目录的父级执行 svn update - 显然需要存储库并因此需要网络连接。

看来你正在阅读老版本的svn客户端的帮助,发布在this question的答案中。

随着1.7版(至少,我不能确认哪个版本的正是这种变化是)及以上svn help revert状态:

注:此子命令不需要网络访问,并且解决所有的冲突状态

而且在我的本地拷贝的一个经过一些测试:

使用文件系统

Cmd-$> rd /Q /S <working copy> 

删除或使用SVN命令

Cmd-$> svn remove <working copy> 
D   <working copy> 
D   <working copy>\<file1> 
D   <working copy>\<file2> 

删除使用命令

Cmd-$> svn revert -R . 

我能够在两种情况下恢复。