Короткая версия:
$ svn st
! + C foo
> local edit, incoming delete upon update
! + C bar
> local edit, incoming delete upon update
$ touch foo bar
$ svn revert foo bar
$ rm foo bar
Если конфликт связан с каталогами, а не с файлами, замените touch
на mkdir
и rm
на rm -r
.
Примечание: та же процедура также работает для следующей ситуации:
$ svn st
! C foo
> local delete, incoming delete upon update
! C bar
> local delete, incoming delete upon update
Длинная версия:
Это происходит, когда вы редактируете файл, когда кто-то другой удалил файл и зафиксировал первым,Как хороший гражданин SVN вы делаете обновление перед коммитом.Теперь у вас конфликт.Понимая, что удаление файла - это то, что вам нужно, чтобы удалить файл из рабочей копии.Вместо того, чтобы быть содержимым, svn теперь жалуется на то, что локальные файлы отсутствуют и что существует конфликтующее обновление, которое в конечном итоге хочет удалить файлы.Хорошая работа svn.
Если svn resolve
не работает, по какой-либо причине вы можете сделать следующее:
Исходная ситуация: локальные файлы отсутствуют, обновление конфликтует.
$ svn st
! + C foo
> local edit, incoming delete upon update
! + C bar
> local edit, incoming delete upon update
Создайте конфликтующие файлы заново:
$ touch foo bar
Если конфликт связан с каталогами, замените touch
на mkdir
.
Новая ситуация: локальные файлы будут добавлены вхранилище (да, верно, svn, что бы вы ни говорили), обновление по-прежнему конфликтует.
$ svn st
A + C foo
> local edit, incoming delete upon update
A + C bar
> local edit, incoming delete upon update
Верните файлы в состояние, в котором они нравятся SVN (что означает удаление):
$ svn revert foo bar
Новоеситуация: локальные файлы не известны svn, обновление больше не конфликтует.
$ svn st
? foo
? bar
Теперь мы можем удалить файлы:
$ rm foo bar
Если конфликт связан с каталогами, то заменить rm
с rm -r
.
svn больше не жалуется:
$ svn st
Готово.