Как разрешить конфликт слияния со свойствами SVN?

#svn

Вопрос:

Это меня уже давно беспокоит-как правильно разрешить конфликт слияния в свойствах SVN, установленных в каталоге? Допустим, например, есть два разработчика, работающих над проектом, в котором svn:ignore установлен в некотором каталоге. Если оба разработчика внесут изменения в это свойство, когда обновится второй, они увидят конфликт слияния.

В отличие от конфликтов слияния файлов, в каталоге под названием «dir_conflicts.prej» создается один файл, который второй разработчик должен прочитать и исправить вручную. Обычно в конечном итоге я возвращаю все свои изменения в локальную копию, а затем перенастраиваю эти свойства вручную с помощью информации в файле dir_conflicts.prej. Однако это довольно громоздко при работе с большим списком URL-адресов в свойстве svn:externals, как это используется во многих наших проектах.

Должен быть лучший способ сделать это-кто-нибудь знает, как это сделать?

Ответ №1:

Просто быстрое обновление после некоторых дополнительных исследований-невозможно легко объединить свойства SVN. Мой первоначально описанный метод (возврат, объединение данных из файлов .prej, набор реквизитов, повторная фиксация), по-видимому, является лучшим способом решения проблем такого типа.

Комментарии:

1. К сожалению, я должен 1 ответить на этот вопрос. Шахта имеет дело со свойством svn:externals и шаблоном в его использовании. Не самое подходящее место для вдавания в подробности, но я просто подумал, что все равно буду здесь ворчать.

Ответ №2:

В то же время это возможно в Eclipse Подклипсе (Индиго) с помощью функции

Команда->Редактирование конфликтов свойств

(только что попробовал с конфликтующими svn:игнорировать свойства)

Эта функция открывает диалоговое окно, в котором отображаются обе версии свойств (локальная и репозитория), где вы можете скопировать и вставить, а затем разрешить конфликт с помощью команды->Пометить Разрешен.

Ответ №3:

У меня была та же проблема.

Я попытался использовать команду->Редактировать конфликты свойств>, но мой STS повесился и не ответил, поэтому я был вынужден закрыть.

Это можно решить с помощью TortoiseSVN

Вот как я решил

  • выберите папку, в которой dir_conflicts.prej находится
  • щелкните правой кнопкой мыши TortoiseSVN -> Разрешить…>
  • Затем он попросит разрешить имущественный конфликт
  • Решите и сохраните

Ответ №4:

Я хотел бы предложить более обнадеживающее решение, но, исходя из моего опыта, в настоящее время невозможно объединить свойства svn с помощью TortoiseSVN. Видишь http://svn.haxx.se/tsvn/archive-2008-09/0212.shtml.

Ответ №5:

Вы имеете в виду конфликт слияния при фиксации/обновлении или слиянии ветвей?

В книге SVN довольно ясно говорится о свойстве svn:игнорировать, в частности:

Subversion не предполагает, что каждый файл или подкаталог в каталоге рабочей копии предназначен для управления версиями. Ресурсы должны быть явно переданы под управление Subversion с помощью команд svn add или svn import.

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

Ответ №6:

Просто для ясности, SVN, похоже, использует файл dir_conflicts.prej для вывода факта наличия конфликта в каталоге. Если вы намерены вручную устранить конфликт, вы можете просто удалить файл dir_conflicts.prej, а затем вручную настроить свойства svn так, как вы хотите. (Конечно, убедитесь, что вы получили то, что вам нужно, из файла .prej, прежде чем удалять его!)

Ответ №7:

У меня был похожий конфликт. Я открыл dir_conflicts.prej в текстовом редакторе и увидел, что текст svn ignore list был изменен. К счастью, содержимое списка осталось прежним, изменился только порядок. Итак TortoiseSVN 1.9.3 , я просто щелкаю правой кнопкой мыши по папке TortoiseSVN -> Resolve... . И конфликт был улажен.