Возврат изменений не удался с некоторыми пропущенными путями
Я прочитал этот ответ: Как мне вернуться к более старой версии нашего кода в 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