Как разрешить сообщение «локальное редактирование, входящее удаление при обновлении» - PullRequest
286 голосов
/ 30 ноября 2010

Когда я делаю svn status ., я получаю это:

!     C auto-complete-config.elc
      >   local edit, incoming delete upon update
!  +  C auto-complete.elc
      >   local edit, incoming delete upon update
!  +  C popup.elc
      >   local edit, incoming delete upon update
!  +  C fuzzy.elc
      >   local edit, incoming delete upon update

в основном, эти файлы не должны быть в хранилище.Разработчик удалил их.Затем, я думаю, я сделал svn rm ... после факта по ошибке (вместо этого надо было сделать svn update .).

Так что теперь, когда я делаю svn status ., я получаю эти сообщения о конфликте деревьев.1010 *

Я нашел здесь документ , но не уверен, как «слить» его в соответствии с документом.

Как от них избавиться?

Iдумаю, моя рабочая копия синхронизирована с хранилищем.Не знаю, почему эти сообщения показывает.Эти файлы должны быть удалены и удалены, насколько я знаю везде.Я попытался svn update . и svn revert ., но я все еще получаю это сообщение, когда я svn status ..

Ответы [ 7 ]

412 голосов
/ 18 декабря 2010

Короткая версия:

$ 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

Готово.

158 голосов
/ 30 ноября 2010

Попробуйте разрешить конфликт, используя

svn resolve --accept=working PATH
19 голосов
/ 14 апреля 2011

У меня такая же проблема, и я обнаружил, что

$ svn revert foo bar

решил проблему.

SVN разрешение не работает для меня:

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

$ svn resolve --accept working .

$ svn st
!  +  C foo
      >   local edit, incoming delete upon update
!  +  C bar
      >   local edit, incoming delete upon update

$ svn resolve --accept working foo
Resolved conflicted state of 'foo'

$ svn st
!  +    foo
!  +  C bar
      >   local edit, incoming delete upon update
2 голосов
/ 20 января 2011

Если вы не внесли никаких изменений в конфликтующий каталог, вы также можете rm -rf conflicts_in_here/ и затем svn up.По крайней мере, это сработало для меня.

1 голос
/ 09 февраля 2018

Вы можете принудительно вернуть локальный каталог в svn.

 svn revert -R your_local_path
0 голосов
/ 06 апреля 2018

Эта проблема часто возникает, когда мы пытаемся объединить , когда другая ветвь изменяется из неправильного каталога.

Пример:

Branch2\Branch1_SubDir$ svn merge -rStart:End Branch1
         ^^^^^^^^^^^^
   Merging at wrong location

Конфликт, который возникаетвыполнение:

Tree conflict on 'Branch1_SubDir'
   > local missing or deleted or moved away, incoming dir edit upon merge

И когда вы выбираете q до выходное разрешение , вы получаете статус:

 M      .
!     C Branch1_SubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge
!     C Branch1_AnotherSubDir
      >   local missing or deleted or moved away, incoming dir edit upon merge

, что явно означаетчто слияние содержит изменения, связанные с Branch1_SubDir и Branch1_AnotherSubDir, и эти папки не могут быть найдены внутри Branch1_SubDir (очевидно, что каталог не может быть внутри себя).

КакВо-первых, избегайте этой проблемы:

Branch2$ svn merge -rStart:End Branch1
 ^^^^
Merging at root location

Самое простое исправление для этой проблемы, которая работала для меня:

svn revert -R .
0 голосов
/ 02 сентября 2015

Таким образом, вы можете просто вернуть файл, который вы удалили, но помните: если вы работаете над любым типом проекта с установленным файлом проекта (например, iOS), возврат файла добавит его в структуру системной папки, но не в ваш проект Файловая структура. дополнительные действия могут потребоваться, если вы в этом случае

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...