需要澄清SVN还原

时间:2013-09-22 12:37:05

标签: svn

在查找SVN恢复命令说明时,我看到了以下说明:

  

此子命令不需要网络访问,并解析任何   冲突的国家。但是,它不会还原已删除的目录。

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

2 个答案:

答案 0 :(得分:1)

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

至于删除的目录,可能不再适用。在1.7之前的版本中,每个目录都可以被视为一个独立的工作副本,因此它可能无法恢复它们,因为它没有原始副本。

答案 1 :(得分:1)

svn.svn文件夹中保存有关工作副本的信息,并使用它在工作副本上执行某些管理任务,而无需访问存储库,即通过网络。如果您浏览这些目录,您将在那里找到一个本地数据库文件和一堆子目录,其中包含一堆.svn-base个文件。这些反映了您上次执行svn updatesvn checkout时工作副本的状态。因此,如果您更改工作副本中的文件svn,则可以根据相应的本地保存的.svn-base文件来区分,从而可以还原更改。

不保存有关目录结构的信息。如果要还原目录上的更改,最简单的方法是执行svn update - 显然需要存储库,从而需要网络连接 - 来自该目录的父目录。

您似乎正在阅读this question答案中发布的旧版svn客户端的帮助。

使用版本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 .

在这两种情况下我都能恢复。