Плюсы и минусы продвижения версии против версий веток - PullRequest
6 голосов
/ 28 мая 2009

В моем текущем проекте я должен решить, какую технику использовать при ветвлении. У меня есть два варианта (предположим, что мы уже решили развиваться в багажнике):

Версии веток

Создайте ветку всякий раз, когда на тестовые машины ставится новая версия, и пометьте ее как «release0.1». Ошибки исправляются в этой ветке (и, конечно, затем объединяются с транком), и когда этот релиз, наконец, выходит в свет, он помечается как «release0.1.1». Это приводит к наличию ветви для каждой основной версии и тега для каждой дополнительной версии. Если ошибка должна быть исправлена ​​в live-версии, она исправляется в соответствующей ветке и затем сливается в транк.

Продвижение версии

Имеют только три ветви "ствол" (для разработки), "тест" и "живой". Когда версия помещается на тестовые машины, транк объединяется (продвигается) в ветку «test», ошибки исправляются в этой ветке, а когда версия выпускается, ветка «test» объединяется с веткой «live» , Если мы обнаружим ошибку в «живой» ветке, она исправляется там и затем сливается в ствол.

Каковы плюсы и минусы этих двух философий? Каковы ваши собственные переживания? Существуют ли другие, возможно, лучшие методы?

Ответы [ 3 ]

4 голосов
/ 28 мая 2009

Зависит от вашей политики обслуживания.

Если вы решите поддерживать более позднюю версию (например, XP параллельно с Vista), лучше выбрать ветки версий.

0 голосов
/ 28 мая 2009

На мой взгляд, эти два примечания эксклюзивные.

Механизм ветвления версий необходим, если вам нужно поддерживать разные версии RELEASED. Но я думаю, что рекомендуется всегда готовить точку ветвления (в зависимости от вашей версии системы) после выпуска версии.

Механизм «продвижения» необходим, если вам нужно выпустить тестовую версию. Это полезно, если у вас есть, например, команда проверки, отличная от команды разработчиков и / или большой команды, в которой разработка идет быстро. В этих случаях вам нужна определенная ветвь для стабилизации следующего «стабильного» выпуска, в то время как магистраль остается «нестабильной».

0 голосов
/ 28 мая 2009

По моему опыту, продвижение версии имеет гораздо меньше накладных расходов при объединении изменений из разных веток и попытке вспомнить, что было исправлено в какой ветке и т. Д., Поэтому, когда это возможно, я предпочитаю работать таким образом. К сожалению, если вы используете продвижение версии, часто невозможно сделать небольшие быстрые исправления в выпущенной версии (потому что есть большие куски кода, отмеченные в ветке «test») -> так что у нас есть ветки версий.

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

...