SVN: «конфликт дерева уже существует», но до того, как я попытался объединить, его не было - PullRequest
5 голосов
/ 25 февраля 2010

Я получаю это сообщение об ошибке из SVN:

svn: попытка добавить конфликт дерева, который уже существует

Теперь об этом уже спрашивали на этом сайте, и данное объяснение состоит в том, что конфликт дерева не был разрешен после предыдущего слияния, и теперь SVN пытается добавить тот же конфликт дерева снова.

Итак, я назвал «svn status» и отметил все конфликты деревьев как разрешенные. Затем я сделал * svn revert -R ** и дважды проверил, что вывод «svn status» полностью пуст. Затем я снова попытался выполнить слияние с тем же сообщением об ошибке в том же месте.

Мне кажется, что svn пытается добавить конфликт дерева в одном и том же месте дважды во время одной и той же операции слияния, что при всем уважении было бы серьезной ошибкой в ​​SVN.

Ответы [ 3 ]

2 голосов
/ 25 февраля 2010

Похоже, что источником этой папки была папка, которую я переименовал не по вкусу SVN. Вместо использования команды svn move я переименовал папку локально, удалил старое имя папки с помощью svn remove и добавил новую с помощью svn add. Однако это порождает «фантомную папку», которая имеет старое имя - она ​​не существует ни в рабочей копии, ни в хранилище, но SVN считает, что она существует. Фантомная папка вызывает конфликт фатального дерева, о котором я упоминал выше.

Вот как мы решили это:

  1. Слейте ствол в ветку. Теперь ветка - это то, что вы хотите, чтобы ваш ствол был.

  2. Создать новую ветвь как клон ствола.

  3. Переключите ваш рабочий каталог на актуальную ветку (то есть ту, которую вы в конечном итоге захотите использовать в качестве ствола). Используйте svn diff > update.patch там.

  4. Скопируйте файл update.patch в папку только что созданной ветви клона.

  5. Переключите ваш рабочий каталог на каталог ветви клона и примените патч. Ветвь клона теперь почти идентична современной ветке с одним отличием: в этих скрытых файлах svn нет упоминания о фантомной папке.

  6. Слейте ветвь клона обратно в ствол.

0 голосов
/ 08 августа 2017

У меня была такая же проблема. Я щелкнул правой кнопкой мыши и решил вернуться. Это решило все проблемы конфликта слияния.

0 голосов
/ 29 апреля 2016

Предыстория проблемы

Я внес изменения в свою рабочую копию, думая, что, если я не * * * * явно '* фиксирую' их, это не повлияет на мое хранилище на сервере.

И чтобы отразить какое-то предупреждение (не помню), я использовал "update" пару раз. Найдя выход из этой ямы, которую я сам вырыл, я понимаю, что команда «update» работает следующим образом:

  1. если рабочая копия изменена / последняя, ​​она будет зафиксирована в репо.
  2. если репозиторий последний, он будет работать вроде "checkout" (насколько я понимаю).

Я использую 2 ветви ( dev и alpha ). И я хотел слить ветку dev в alpha .

Шаги, используемые для исправления

  1. обновление my alpha до версии, которую я намеренно совершил,
  2. объединено dev в alpha .

Примечание: Я использовал SmartSVN.

...