TortoiseSVN подходит для разрешения конфликтных ситуаций - PullRequest
1 голос
/ 08 ноября 2010

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

Проблема заключается в том, что в случае конфликта " ... at merge "типы TortoiseSVN не могут угадать, какие файлы необходимо объединить.

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

  • Разработчик Aработа над стволом изменяет файл Foo.c и фиксирует его в хранилище.
  • Я работаю над перемещением файла Foo.c ветви в Bar.c и фиксирую его в хранилище.

Слияние изменений разработчика А с рабочей копией моей ветки приводит к конфликту деревьев:

  • Bar.c уже находится в моей рабочей копии со статусом 'normal'
  • Foo.c isпомечены как отсутствующие с конфликтом деревьев

В большинстве случаев мне нужно объединить изменения разработчика A в Foo.c в переименованный Bar.c.

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

Файл Foo.c с изменениями Разработчика А не представлен в моей ветке WC.

Справка TortoiseSVN говорит: « Обратите внимание, что если вы копируете отсутствующий файлиз хранилища, а затем пометить как разрешенные, ваша копия будет удалена снова.Сначала нужно разрешить конфликт.

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

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

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

Ответы [ 2 ]

3 голосов
/ 09 ноября 2010

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

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

2 голосов
/ 08 ноября 2010

Вы можете использовать «Объединение двух URL», чтобы объединить изменения с 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

Принимая во внимание, что ветвь / B работаеткопия.

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

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

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

Возможно, есть причина попробовать Mercurial .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...