使用某些跳过的路径还原更改失败

时间:2017-02-12 13:23:12

标签: svn merge revert

我已经阅读了这个答案:How do I return to an older version of our code in Subversion?并使用命令svn merge -r 150:140 .恢复到旧版本(我不需要提交已恢复的更改,只需转到旧版本的文件)。在此之前,我在版本150处有一个干净版的repo(没有手动更改文件)。不幸的是,我收到了这些警告:

...
Skipped 'some/file.h'
Skipped 'some/file2.h'
...
Skipped 'some/file3.h'
Skipped 'some/file4.h'
...
Summary of conflicts:
Skipped paths: 4

令我惊讶的是,我想要做的就是回到一些旧版本的文件(事先我没有变化)。

导致这种情况的原因是什么?我如何使用旧版本?

编辑:我已经检查过,显然这些文件在currrent版本(150)中不存在(无论是在磁盘上还是在SVN中):

svn: warning: W155010: The node 'some/file.h' was not found.

但它们确实存在于修订版140中。所以它们被删除了。但为什么SVN不能恢复它们呢?

1 个答案:

答案 0 :(得分:4)

这种树冲突最常见的根本原因是,您的工作副本有一些变化,然后您尝试合并 - 可能会发生不好的事情。只是从输出中猜测,它可能与“some”文件夹相关(即,如果整个文件夹在版本140和150之间被删除 - 不仅仅是文件;或者如果在合并之前在跳过的文件中有一些本地更改)。

如果将来再次发生这种情况,请尝试通过执行以下命令恢复失败的合并:

svn revert --recursive

返回修订版150删除任何未版本控制的文件&来自工作副本的文件夹,然后使用

重新运行合并
svn merge -r 150:140 -v --force .

-v会显示更详细的信息,--force会删除工作副本中的文件,即使这些文件是在本地修改过的)

如果其他一切都失败了,最后的办法总是只需使用

将新版本的工作副本从版本140签出到新的本地文件夹中
svn checkout -r 140 $your_url