Модель ветвления TFS 2010 для внутреннего приложения

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

Таким образом, у нас есть внутреннее приложение только с одной версией (последней), выпущенной для клиентов, и в основном есть 2 вида деятельности по разработке: основная деятельность работает над следующим выпуском и обычно включает новые функции и корректирующие исправления, и это запланировано, а второе, которое не запланировано, связано с обслуживанием и включает исправления текущей версии в производстве.

После долгих исследований мы решили использовать главную ветку, из которой мы разветвляем 2 дочерние ветки: Разработка и Техническое обслуживание (или Исправление). Как показано в руководстве, ежедневная разработка будет происходить в ветке Разработка, откуда мы выполняем обратную интеграцию (RI) каждый раз, когда у нас есть функции, готовые к следующему выпуску. Прямо перед релизом обратная интеграция будет остановлена, а код будет стабилизирован в ветке Main. После выпуска из Main будет произведена прямая интеграция (FI) из Main в Разработку и Техническое обслуживание.

Любое исправление будет происходить только в Maintenance, и в зависимости от исправления (например, если мы хотим сохранить его в кодовой базе) мы выполним RI в Main, а оттуда FI в Развитие.

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

Например, мы бы также рассмотрели возможность создания еще одной ветки, Release, в которой стабилизация кода происходит перед выпуском в рабочую среду (вместо работы непосредственно в Main), и, конечно же, мы выпустит отсюда в рабочую среду и выполнит RI в Main, а затем FI в Development и Maintenance, но мы не уверены, что это принесет какую-то пользу или только усложнит?

И если предположить, что в Разработке будут функции, которые не будут готовы или нежелательны для следующего выпуска, это означает, что нам придется сделать некоторый «выбор вишен» из наборов изменений, связанных с желаемыми. функции, но это не слишком хорошо в соответствии с документами. Какие-либо предложения?

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


person Iulian Ilies    schedule 11.01.2012    source источник
comment
Звучит неплохо. Прочитайте это: stackoverflow.com/questions/3245304/branching-plan- требуется/   -  person KMoraz    schedule 12.01.2012
comment
@KMoraz: Что я мог извлечь из другого поста, так это выбирать просто и разумно, и мне это нравится. Однако я не уверен, что нам достаточно только Dev&Main. Нам нужно изолировать работу над исправлениями между выпусками. Спасибо за ссылку, все, что я могу прочитать, помогает.   -  person Iulian Ilies    schedule 12.01.2012


Ответы (1)


Вы читали документацию TFS ALM Rangers Branching Guidance? То, что вы предлагаете, очень похоже на их «Стандартный план ветвей», хотя они поощряют наличие как релизной, так и «сервисной ветки» (так же, как ваши ветки Release и Maintenance выше).

http://vsarbranchingguide.codeplex.com/

Я реализовал план Standard Branching на нескольких клиентах, и у меня не было с этим проблем. Если вы планируете внедрить параллельные потоки работы (специальные группы и т. д.), в Руководстве по ветвлению также есть четкие планы на этот счет.

Еще одна вещь, которую следует учитывать, — это ступенчатая модель, в которой вы создаете новые ветки Dev при каждом выпуске и замораживаете старую в качестве выпуска. Это позволит избежать RI, поскольку вы можете просто исправить старую и при необходимости внести исправление в новую ветку Dev. Я тоже работал в этой модели, и это было потрясающе.

person Nick Nieslanik    schedule 11.01.2012
comment
Спасибо за ответ. Я загрузил контент с сайта codeplex, хотя я не все прочитал, пропустил многокомандность, мультифункции, параллельные пакеты обновлений и т. д. Да, план Standard Branch выглядит хорошо, хотя мы действительно не делаем пакеты обновлений ( кумулятивные исправления/патчи), поэтому, вероятно, будет достаточно веток Realease и Hotfix. Тем не менее я не смог найти ни в одном из руководств сколько-нибудь глубоких объяснений, связанных с этим планом; например, когда делать FI & RI, где стабилизировать код перед релизом, какая ветка будет выпущена, где и в какой момент времени. - person Iulian Ilies; 12.01.2012
comment
да, они не дают вам всего... Для этого и существуют консультанты ;) ... На самом деле, я думаю, это потому, что ответы на эти вопросы являются своего рода качественными/субъективными. По моему опыту, ответ — все, что работает для вашей команды. В прошлом я работал с командами, в которых RI to Main происходит только тогда, когда вы хотите создать ветку для выпуска, а другие команды делали это всякий раз, когда функция готова для контроля качества. Я всегда рекомендую поднимать планку ошибок довольно высоко, когда вы находитесь в ветке Release. Только ошибки P1/S1. Вся остальная стабилизация должна произойти где-то до этого. - person Nick Nieslanik; 13.01.2012