Подтвердить что ты не робот

Функция слияния svn, разбитая на конфликты дерева

Я не знаю, когда команда 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).

4b9b3361

Ответ 1

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

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

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

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

Марк Пиппард говорит, что более старая версия сервера не приведет к конфликтам деревьев. Сервер нужно обновить только в том случае, если вы хотите поддерживать отслеживание слияния, а ваш сервер - до 1.5. Видимо, отслеживание слияния - это единственное, чего не хватает на старых серверах svn:

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

Ответ 2

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

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

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

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

Ответ 3

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

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

Опять же, это все предположение и может быть не очень полезно...

Ответ 4

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

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

svnadmin upgrade {repopath}

который был довольно безболезненным.

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