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