SVN似乎无法还原更改

5
我从存储库中拉取了代码,在多个文件中进行了更改,现在我想撤消这些更改。
我尝试了svn revert -R .svn revert --depth infinity .,但是当我调用svn status时,我仍然看到所有标记为已修改的文件,并且它们似乎与我尝试还原之前相同。
我在文档中看到了这个讨论:链接,但它似乎处理的是从一个提交到另一个提交,而不是撤消所有未提交的更改。
(我没有使用TortoiseSVN。)
我无法给您状态命令的精确转储,但它看起来有点像这样:
>>svn status
?    dir/
?    dir/
X    dir/
?    dir/

Performing status on external item at [dir]
M    file

Performing status on external item at [dir]
?    dir/
?    dir/
?    file
?    file
X    dir/

我个人总是保留一份备份的压缩文件,独立于任何代码库之外。当需要“回溯”到旧版本时,很少有备份工具能够满足我的要求(例如,它们会给它一个新的时间戳,而不是原始时间戳)...... 当然,遵守组织的政策并将代码放入代码库中以供其他开发人员使用,但务必保持独立备份。 - JosephDoggie
1
反转命令的输出是什么?它会列出已还原的文件吗? - Laurent H.
@LaurentH。我不相信没有任何输出。 - user2201041
展示给我们 svn status 的输出。它是否有标记为 M? 的项目? - bahrep
1
阅读最新的文档。最新的SVNBook版本是1.8,但您参考的是1.5版。http://svnbook.red-bean.com/en/1.8/svn.ref.svn.c.revert.html - bahrep
1个回答

3
根据 svn:externals 文档,有一些命令将递归到由 externals 定义的目录中。这些命令是:
  • checkout
  • update
  • switch
  • export
  • status
大多数命令都有一个 --ignore-externals 标志,让你避免更新这些内容。
然而,使用 svn:externals 通过在定义它们的目录下创建独立的工作副本来实现。除了上面提到的小集合命令之外,这就是外部目录的处理方式。具体来说,在您的情况下,svn revert 跳过外部目录,因为它们实际上不是此工作副本的一部分。
不幸的是,这似乎是 svn:externals 中尚未解决的问题之一。您可能需要切换到已修改的外部目录并在那里还原。
您可能可以很容易地编写脚本来完成此操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接