Возврат изменений не удался с некоторыми пропущенными путями

Я прочитал этот ответ: Как мне вернуться к более старой версии нашего кода в Subversion? и использовал команду svn merge -r 150:140 . вернуться к старой ревизии (мне не нужно было фиксировать отмененные изменения, просто перейдите к старой версии файлов). До этого у меня была чистая версия репо на ревизии 150 (никаких изменений в файлах вручную). К сожалению, я получил эти предупреждения:

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

Что удивляет меня, поскольку все, что я хотел сделать, - это вернуться к какой-то старой версии файлов (и у меня не было никаких изменений заранее).

Что могло вызвать это? Как мне добраться до старой версии?

Изменить: я проверил, и, видимо, эти файлы не существуют в текущей версии (150) (на диске или в SVN):

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

Но они существовали в пересмотре 140. Так что где-то по пути они были удалены. Но почему SVN не может просто восстановить их?

1 ответ

Наиболее распространенная основная причина такого конфликта дерева состоит в том, что ваша рабочая копия изменилась, а затем вы пытаетесь объединиться - могут случиться плохие вещи. Просто догадываясь по выводу, это может быть связано с "некоторой" папкой (т. Е. Если вся папка была удалена между ревизиями 140 и 150 - не только файлы, или если у вас были некоторые локальные изменения в пропущенных файлах перед объединением).

Если это произойдет в будущем, попробуйте отменить неудачное объединение, выполнив:

svn revert --recursive

Вернитесь к ревизии 150 и удалите все неверсированные файлы и папки из рабочей копии и повторите объединение, используя

svn merge -r 150:140 -v --force .

(-v будет отображать более подробную информацию, --force удалит файлы из вашей рабочей копии, даже если они были изменены локально)

В случае, если все остальное терпит неудачу, последним средством всегда является извлечение свежей рабочей копии из ревизии 140 в новую локальную папку с использованием

svn checkout -r 140 $your_url
Другие вопросы по тегам