svn update 不会替换已删除的 --- 但未签入 --- 文件

svn update does not replace deleted --- but not checked-in --- files

我有一个版本控制的目录,其中许多子目录的所有子目录都被 - 不清楚如何 - 删除,并且 svn status 用 "D" 标记它们。我已经用 svn ls -R <URL> 检查了它们是否在回购协议中。我想将这些文件放入我的本地工作区。 svn up 告诉我只有两个子目录的本地目录是最新的。我已经尝试 svn revert 放弃任何可能的本地更改,并且还尝试使用 svn -r<number> 更新到上次使用的修订版,但没有任何改变。我应该也有其他文件和子目录,但我不知道如何获得它们。 我使用 linux 命令行中的 svn, version 1.9.5 (r1770682)。 如何调试问题所在,以及如何将此目录的回购版本强制到我的本地副本?

svn up 只会恢复由 svn status 标记为 ! 的 files/directories。这些文件只是丢失了。

svn status 报告标记为删除的文件 D (svn delete)。 svn delete 从磁盘中删除文件,如果您提交它(即使文件不存在也是可能的),它们将从服务器的 HEAD 修订版中删除。

要恢复标有 D 的文件,svn revert 是正确的解决方案。使用 svn revert -R . 以递归方式还原当前目录及以下目录中的所有本地更改。

或者,对每个丢失的文件使用 svn revert path/to/missing/file。可以在 linux 上编写脚本:

svn revert $(svn status | sed -ne 's/^D//p')