Функциональность слияния svn нарушается из-за конфликтов деревьев

StackOverflow https://stackoverflow.com/questions/1190345

  •  19-09-2019
  •  | 
  •  

Вопрос

Я не знаю, когда команда svn решила вызвать у нас конфликты деревьев, но это полностью нарушило функциональность слияния svn.

У меня есть ветка, и я хочу объединить последние изменения из ствола в ветку.Я уже делал одно такое слияние, но оно не удалось из-за конфликта деревьев.Вот команда:

$ svn --force merge -r 3185:3192 svn://chamar2/rx-services/SAMS .
svn: Attempt to add tree conflict that already exists

Когда я впервые попробовал это слияние (без --force) он только создал конфликт дерева и ничего не объединил.Теперь он просто сообщает сообщение выше.

Если я сделаю svn status в рабочей копии ветки отображаются все файлы с изменениями, которые еще не были объединены обратно в ствол.Конечно, цель моей ветки — внести эти изменения там, где их еще нет в багажнике.

О чем они думали, когда делали это?

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

Есть ли способ заставить svn забыть о конфликтах деревьев и просто выполнить слияние, как раньше?

Я использую клиент 1.6 и более старый сервер svn (вероятно, 1.3.1).

Это было полезно?

Решение

Проблема оказалась в том, что в качестве источника слияния я выбрал каталог родительский/ вместо каталога родительский/транк/.Это была ошибка пользователя, но сообщение о конфликте дерева сбивает с толку.Если бы svn просто выполнил слияние, я бы сразу увидел проблему.

Конфликты деревьев привели к появлению новой семантики сообщений, к которой придется привыкнуть.

Спасибо за указатель на документацию Tortoise по конфликтам деревьев.Это единственная документация, которую я видел, в которой рассматривается работа с ветвями.Однако приведенный пример не объясняет, почему у меня возникли конфликты деревьев в файлах, которые я изменил в ветке.К сообщениям о конфликтах деревьев придется привыкнуть.

Похоже, что в большинстве случаев все, что вы делаете, — это отмечаете, что конфликты деревьев разрешены, а в этих случаях конфликты деревьев — это просто шум.

Марк Фиппард говорит, что более старая версия сервера не будет вызывать конфликтов деревьев.Сервер необходимо обновлять только в том случае, если вам нужна поддержка отслеживания слияний и ваш сервер имеет версию до 1.5.Судя по всему, отслеживание слияний — единственное, чего не хватает на старых серверах svn:

http://eclipse.open.collab.net/ds/viewMessage.do?dsForumId=62&dsMessageId=332448

Другие советы

СВН:Попытка добавить конфликт дерева, который уже существует.

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

Если вы выполняете операцию слияния и вас не устраивает результат, то прежде чем пытаться что-то еще, вам следует сначала вернуться местные изменения.

Что касается исходного конфликта деревьев:чтобы понять, почему поведение отличается от поведения старых клиентов и как разрешать подобные конфликты, необходимо прочитать раздел о конфликтах деревьев в книге SVN.В руководстве по tortoiseSVN также есть хорошая тема о конфликтах деревьев.

У меня есть предположение, что вы наблюдаете плохое взаимодействие между клиентом 1.6 и сервером 1.3.Обнаружение конфликтов деревьев — новая функция версии 1.6.Кроме того, в версии 1.5 была изменена поддержка слияния (и тогда она стала намного удобнее).

Я бы попробовал обновить формат сервера и репо до 1.6, еще можно попробовать использовать клиент 1.5 (без конфликтов дерева) или 1.4 (и без нового слияния).

Опять же, это всего лишь догадки и могут оказаться бесполезными...

Привет, ребята, у меня была точно такая же проблема: конфликты деревьев, когда я пытался выполнить слияние svn.Оказывается, Лауринас был абсолютно прав.Это произошло потому, что репозиторий svn был старой версии.На сервере я зашел в каталог {repopath}\db\format, и внутри файла формата было «2».

Все, что я сделал, это сделал

svnadmin upgrade {repopath}

что было довольно безболезненно.

После этого, когда я попытался использовать отслеживание слияний, у меня больше не возникало конфликтов деревьев!Спасибо за совет!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top