У нас есть то, что я узнал как стандартный шаблон в GIT: Master -> Develop -> Feature.
Наша команда обычно завершает работу над функцией, проверяет и утверждает ее код перед тем, как перейти к разработке. Но в этом случае нас просят проверять и продвигать незавершенный код.
Плюс в том, что команда будет приближаться к паритету. Обратной стороной будет то, что мое одобрение будет касаться кода, который не готов к отправке в нашу ветку разработки.
Любопытно, сталкивались ли другие в мире программирования с этой ситуацией и как вы поступили.
В нашем случае у нас есть еще одна ветка, ветка Релиз, для подготовки, проверки, тестирования и утверждения кодов, которые планируется отправить / выпустить / развернуть. Он является ответвлением от Развивать, который используется только как ветвь интеграция для слияния функций физическое лицо.
Он частично основан на рабочем процессе Gitflow, описанном в этом руководстве по Atlassian Git: https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
Коды в Развивать обычно рассматриваются как незавершенные или незавершенные. Прохождение обзоров и тестов перед объединением веток Характерная черта означает, что функция работает сама по себе. Но все еще есть пример того, как эта функция работает с функциями Другие, которые все еще могут быть в разработке. Функция сам может быть уже готова к выпуску, но все - объединенные функции (старые и новые), возможно, еще не готовы.
Вот здесь и появляется ветвь Релиз. Мы разветвляемся от Развивать после слияния определенного набора функций. Это похоже на высказывание «теперь у нас есть код кандидата на выпуск, содержащий этот набор новых функций». Затем в этой ветви Релиз выполняются окончательные интеграционные тесты, обзоры кода и утверждения. После прохождения всех проверок он, наконец, объединяется с Владелец и освобождается.
Master -------------------------------------O (product release)
/
Release --O---
/ \
Develop ----O--------------O---O--O-----------O---
\ / / /
FeatureA ---------O--O----- / /
\ / /
FeatureB ---------O--O------- /
\ /
FeatureC ------------O--------
Если что-то не так в ветви Релиз, либо (1) мы создаем ветвь исправления из Развивать, а затем объединяем ветвь исправления с Релиз, либо (2) мы применяем исправление непосредственно к ветке Релиз (если она достаточно «маленькая»), затем объединяем он вернется к Развивать позже.
Преимущество наличия отдельной ветви Релиз заключается в том, что теперь утверждение выполняется для ветви, которая содержит полный код, который должен быть выпущен. Выполнение тестов и выполнение обзоров в этой ветке гарантирует, что мы проверяем код в целом со всеми функциями, интегрированными вместе. Понятно, что в эту ветку больше не должно быть новых функций, которые нужно добавлять / удалять, как если бы говорилось «это код кандидата на выпуск, ожидающий утверждения».
Дополнительным преимуществом является то, что ветвь Релиз хранится отдельно от возможной и обычно продолжающейся разработки в ветви Развивать. Людям, которые несут ответственность за утверждение выпусков, нужно будет сосредоточиться только на ветви Релиз.