Tortoisesvn подходит к разрешению конфликтов деревьев

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

Вопрос

TortoiseSVN может помочь с несколькими видами конфликтов деревьев, используя Редактировать конфликт окно.

Проблема в том, что в случае "... на слиянии«Типы конфликтов TortoiseSVN не могут угадать, какие файлы должны быть объединены.

Например, (случай: Локальный отсутствует, входящий удаление при обновлении)

  • Разработчик работает над багажником, изменяет файл foo.c и совершает его в репозиторий.
  • Я работаю над филиалом Move file foo.c в bar.c и посвятить его репозитории.

Объединение разрабатывающих изменений в моей ветке Рабочая копия приводит к конфликту дерева:

  • BAR.C уже в моей рабочей копии со статусом «нормально»
  • Foo.c помечается как отсутствует с конфликтом дерева

В большинстве случаев мне необходимо объединить изменения в FOO.C в переименованные Бар.c.

Но как я могу это сделать?

Файл foo.c с разработчиком a Изменения A нет в моем ветке WC.

То Помощь Tortoisesvn говорит "Обратите внимание, что если вы копируете отсутствующий файл из репозитория, а затем отметьте, как разрешено, ваша копия будет снова удалена. Вы должны сначала разрешить конфликт.

Итак, мне нужно будет чечить хобот Чтобы получить доступ к файлу Foo.co.C для слияния? Есть ли более простым подходом, чтобы решить эту проблему?

Эта проблема (как TortoiseSVN может решать конфликты деревьев) очень важно для меня и наших разработчиков.

Не могли бы вы помочь мне?

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

Решение

Вы можете использовать «два URL Merge», чтобы объединить изменения с Foo.c на «багажник» в вашу разветвленную и переименованную Bar.c.

cd branch/B
svn merge http://www/svn/svnroot/branches/B/Bar.c http://www/svn/trunk/Foo.c Bar.c

В то время как филиал / б является рабочей копией.

Чтобы наконец удалить разработчик конфликта A и B должен согласиться с тем же именем файла. Использование разных файлов для одного и того же кода не может быть желательным.

РЕДАКТИРОВАТЬ:От поиска того, как «другие» VCS приближаются к этой проблеме, я хотел бы цитировать от абзаца «Переименовывать файлы и объединение изменений»:

Если я изменим файл, и вы переименовываете его на новое имя, а затем объединяем наши соответствующие изменения, мои изменения в файл под его исходным именем будут распространяться в файл под его новым именем. (Это то, что вы можете ожидать «просто работать», но не все системы контроля ревизионов на самом деле делают это.)

Может быть, причина дать Mercurial попробовать.

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

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

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

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