Subversion, Слияние - PullRequest
       48

Subversion, Слияние

3 голосов
/ 08 июня 2011

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

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

У нас есть 1 товар. Ради этого примера давайте назовем его «ПРОДУКТ». Мы запускаем 2 одновременных цикла разработки. Еженедельный цикл обслуживания, где мы исправляем ошибки, не возникающие при нажатии, и двухнедельный спринт Есть две ветви, созданные из ствола, под названием «Sprint» и «Maintenance» (шокирующий выбор имени, я знаю!). Также для срочных / блокирующих проблем исправления вносятся непосредственно в транк и отправляются в производство после тестирования.

9 раз из 10, когда я пытаюсь реинтегрировать спринт или техническое обслуживание обратно в багажник, я получаю БОЛЬШОЕ количество конфликтов. На файлах, над которыми никогда не работали ни в одной из веток. Это приводит к большому количеству ручного слияния, которое отстой и приводит к большему количеству проблем.

Поэтому я выдам команду: svn merge --reintegrate http://repo/Sprint и хотя некоторые файлы будут обновляться, у меня будут конфликты с файлами, которые ТОЧНО идентичны (через WinMerge). Я не знаю, что вызывает эти конфликты.

Как я могу перестать иметь эти смешные конфликты?

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

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

Так что либоиспользуйте множество небольших ветвей функций или переключитесь на DVCS, например Mercurial или git, который обрабатывает слияние более интеллектуальным способом, чем SVN в настоящее время.

1 голос
/ 16 сентября 2011

Вам может понравиться проект MergeMagician от Timpani Software. Это решение для управления филиалами и автоматического слияния, которое работает с Subversion (а также с Microsoft TFS). Вы создаете отношения публикации / подписки между ветвями, а затем сервер автоматизирует слияния.

Частое объединение с помощью средств MM упрощает возникновение конфликтов слияний, и, когда они случаются, MM предоставляет веб-механизм для их разрешения.

К вашему сведению, это коммерческий инструмент. Единственный инструмент с открытым исходным кодом, о котором я слышал, это что-то близкое к этому, это Merge Fairy, но я не думаю, что Merge Fairy разрабатывается очень активно.

Проверьте это на http://www.timpanisoftware.com.

0 голосов
/ 09 июня 2011

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

Магистральные --- Создать Спринт

--- Слияние спринта в багажник --- Слить багажник в спринт

...