Tortoise SVN лучшая модель разработки / слияния / выпуска для сложной настройки

#merge #tortoisesvn #branch

#слияние #tortoisesvn #ветвь

Вопрос:

Наша команда разработчиков работает внутри существующих проектов и развертывает в совершенно разных средах. Не ожидается, что работа, которую мы выполняем, никогда не будет объединена с их работой, но мы обязаны соответствовать им. Они используют традиционную настройку trunk-branch (но не совсем теги). Для производственного выпуска создается ветвь, а затем по мере выпуска над нейпродолжается разработка……….

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

Внезапно я чувствую себя фиктивным текстовым генератором subversion…

Учитывая ограничение, что мы не можем изменить рабочий процесс другой команды, есть ли лучший поток для нас? Дайте мне знать, если я тоже чего-то не понимаю в объяснении.

Спасибо.

Ответ №1:

Два основных принципа:

  • Ветви поставщиков
  • Часто происходит слияние

Из-за незнания правила 2 вы получаете «Ад слияния», как и ожидалось

Для более разумного рабочего процесса (читайте о филиалах поставщиков в Net, там много информации) вы можете

  • Не просто скопируйте восходящую ветвь в свою магистраль, но создайте ветку поставщика (branch) в вашем репозитории, свяжите ее с svn: externals с веткой источника (без исправления версии источника в URL, ссылка на подвижный ЗАГОЛОВОК)
  • Скопируйте ветку в (пустую) магистраль
  • Отслеживайте фиксации в репозитории upstream (SVNMonitor, CommitMonitor) и при каждой фиксации в ветке upstream объединяйте ветку вашего поставщика с вашей магистралью (svn 1.6-1.7 будет лучше, чем более старые версии)

После завершения восходящего потока и запуска нового вы можете либо отредактировать определение externals в старой ветке (для URL следующей ветки), либо полностью удалить ветку и начать новую (удаление всего из вашей магистрали не требуется, только объединить содержимое новой ветки)

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

1. По сути, у нас есть филиалы поставщиков, но мы выполняем слияние в ветке. Насколько я понимаю модель ветки поставщика, вы не трогаете фактическую ветку, но вносите ее в строку разработки для внесения изменений.

2. Итак, как я могу скопировать эту ветку в качестве новой магистрали, максимально сохранив историю?

3. svn co… вы можете (TBT!) просто rm все содержимое дерева trunk перед копированием