Для чего нужна ветка master и релиз?
Мой английский недостаточно хорош, чтобы понять объяснение git flow
Для моего понимания.
Master branch
для готового продукта, который может быть загружен на рынок пользователями.
Но есть release branches
Я понятия не имею, ветки тезисов это выпуск для кого?
Выпуск для клиентов? или для QA?
4 ответа
однажды develop
Вы приобрели достаточно функций для выпуска (или приближается заранее определенная дата выпуска), и вы выпускаете ветку выпуска из разработки. Создание этой ветви запускает следующий цикл выпуска, поэтому после этой точки новые функции не могут быть добавлены.В эту ветку должны входить только исправления ошибок, генерация документации и другие ориентированные на выпуск задачи (включая тестирование). Как только он готов к отправке, релиз объединяется с основным и помечается номером версии. Кроме того, его следует объединить с разработкой, которая могла прогрессировать с момента запуска релиза.
Использование выделенной ветви для подготовки выпусков позволяет одной команде отработать текущий выпуск, в то время как другая группа продолжает работу над функциями для следующего выпуска. Это также создает четко определенные фазы разработки (например, легко сказать, "на этой неделе мы готовимся к версии 4.0" и фактически видим это в структуре репозитория).
Больше информации здесь для филиалов
Как объясняется в оригинальном сообщении В. Дриссена:
Мастер - это постоянная ветвь, которая всегда отражает состояние готовности к производству. Так что да, это для готового продукта, который может быть загружен на рынок пользователем.
Релиз - это временная ветвь поддержки для поддержки подготовки нового производственного релиза. В основном это означает исправление ошибок, документирование и т. Д., Как указано в minas.
На диаграмме, с которой вы связаны, да, master
используется для "готового продукта", который выпускается для пользователей. (Не все используют master
таким образом, хотя.)
На диаграмме каждый раз, когда команда готовит новый выпуск "готовый продукт", они создают новую ветку "выпуск". Пока они готовят релиз, они не добавляют никаких новых функций в ветку "релиз" - добавление новых функций может вызвать новые ошибки, и они пытаются сделать версию "релиза" максимально стабильной, прежде чем она станет общедоступной., Они добавляют коммиты в ветку "релиз", чтобы исправить любые проблемы, обнаруженные во время финального тестирования, отшлифовывать неровности и т. Д. Поэтому создание ветки "релиз" помечает точку "замораживания возможностей" - когда они решают, что только функции, которые они уже разработали, войдут в следующий публичный релиз.
Как только они готовы опубликовать новую версию продукта, они объединяют ветку "релиз" в master
и пометьте коммит, который используется для создания общедоступного продукта. (Если они выпускают версию 1.0, они могут пометить коммит 1.0
, и так далее.)
В то же время, когда они работают над новыми функциями, они создают новые "функциональные" ветви (ветвление из develop
) и совершить на них. Когда новая функция работает, они объединяют свою ветвь обратно в develop
, develop
всегда движется вперед
Я считаю, что если после одного раунда интеграционного тестирования, скажем, в ITF, мы вырежем ветвь выпуска. Здесь будет еще один раунд тестирования в некоторой среде, скажем, в любом экземпляре среды stage.
Но снова, чтобы переместить код в производство, мы собираемся объединить эту ветвь выпуска в Master Branch и создать искусственный выпуск и развернуть его в prod, или мы создадим артефакт выпуска из ветки выпуска и объединим код для master.
В обоих случаях нам не нужно иметь другую ветку. Я сделал это сложным, но постараюсь понять это. Почему вам нужны как релизная, так и основная ветки. Логика, о которой вы будете думать, - это продолжительность существования. Но об этом можно легко позаботиться, пометив конкретный выпуск и создав ветку оперативного исправления из основной ветки, если таковая имеется.
Дай мне знать, что ты думаешь по этому поводу.