Разветвление и слияние SVN в быстро меняющейся функциональной среде с высоким оборотом - PullRequest
2 голосов
/ 05 марта 2009

Я надеюсь, что это имеет смысл и приносит извинения, если это уже было рассмотрено.

Ситуация: мы делаем регулярные выпуски в производственную среду. По крайней мере, раз в две недели, но довольно часто в неделю может быть до трех выпусков. У нас сосредоточена команда из 3xSE, 2xWD, 3xQA и технического менеджера / ведущего (меня). Коллектив колеблется в зависимости от требований, но мы обычно обнаруживаем, что QA резко увеличится в размере к концу, чтобы справиться с задержанными требованиями / активами или большой фазой регрессионного тестирования. 6 стандартных веток функций, которые обычно ориентированы на даты выпуска, и одна ветка, которая удваивается как ветка выпуска. Есть накладные расходы на слияние и ветвление, но мы очень хорошо разбираемся в изобразительном искусстве. Таким образом, мы поддерживаем ветки путем слияния из внешней линии в функциональную ветвь на регулярной основе всякий раз, когда происходит слияние с внешней линией из одной из функциональных ветвей. Это дало нам гибкость, позволяющую нашему клиенту изменять свои требования, откатывать целые выпуски и т. Д., Не оказывая слишком сильного влияния на другие элементы выпуска, которые выполняются в отдельной ветви.

Проблема: я хотел бы взглянуть на способы улучшения этого процесса, и мы рассмотрели возможность выполнения ВСЕЙ работы в магистральном репозитории, переходе в QA-репозиторий и затем в выпускную ветвь. Мы по-прежнему сможем использовать ветки функций, если это потребуется от ствола, хотя это может быть неодобрительно. Суть в том, что для объединения двух основных элементов сайта - контента и функциональности - нам нужно, чтобы все зависело от времени. То есть предоставить механизм, чтобы поставить зависимость времени от контента (я не уверен, что вы могли бы на функциональность). Стоимость этого процесса будет относительно высокой, и мы очень быстро узнаем, не сработал ли он, потому что мы не смогли бы достаточно быстро ответить клиенту. Имейте в виду, что в настоящее время клиент может просматривать каждую из наших ветвей функций, а также транк в своей отдельной среде UAT.

У кого-нибудь есть предложения или с подобной ситуацией раньше?

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 марта 2009

Используете ли вы SVN 1.5, в противном случае я бы серьезно посмотрел на функциональность "svn merge --reintegrate".

1 голос
/ 05 марта 2009

По сценарию, который вы описали. Я предлагаю перенести экспериментальную разработку в основной ствол и создавать ветки релизов, когда вы замораживаете функции для релиза. С этого момента добавляйте только исправления ошибок в ветку релиза. Выпуск веток можно оставлять столько, сколько необходимо. Нет необходимости удалять ветку после отправки релиза. (Конечно, это не повредит. С SVN ничего не удаляется навсегда).

...