在查找SVN恢复命令说明时,我看到了以下说明:
此子命令不需要网络访问,并解析任何 冲突的国家。但是,它不会还原已删除的目录。
我想知道,为什么它不需要网络访问,以及它为什么不恢复已删除的目录。
答案 0 :(得分:1)
svn revert
不需要网络访问,因为每个工作副本都存储每个文件的“原始”副本,因为它是在上次更新时从存储库下载的。因此revert
将该文件复制到您的工作副本中。
至于删除的目录,可能不再适用。在1.7之前的版本中,每个目录都可以被视为一个独立的工作副本,因此它可能无法恢复它们,因为它没有原始副本。
答案 1 :(得分:1)
svn
在.svn
文件夹中保存有关工作副本的信息,并使用它在工作副本上执行某些管理任务,而无需访问存储库,即通过网络。如果您浏览这些目录,您将在那里找到一个本地数据库文件和一堆子目录,其中包含一堆.svn-base
个文件。这些反映了您上次执行svn update
或svn 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 .
在这两种情况下我都能恢复。