Переход к новым веткам
Почему мы начали переход
Текущий подход ведения гита нам не совсем подходит. Для его соблюдения нужно больше промежуточных веток, дисциплины, а также предварительное планирование связей и релиза фичей.
Из-за частого непонимания когда и что будет залито в прод фичи копятся на стендах и конфликтуют друг с другом. Вы наверняка сталкивались с ситуациями, когда вам понадобился чужой код, который не скоро будет залит в прод. Или когда вы совместно льете в одну область системы с разных веток, постоянно решая конфликты.
Что мы предлагаем
Переход на фича-флаги. Протестированный, не ломающий сайт, но не обязательно готовый функционал можно скрыть от прода и залить обратно в main. Тогда все заранее будут видеть, что с системой происходят изменения.
Мы понимаем риски, что количество развилок в коде возрастет. Мы считаем, что искать код на разных ветках или сталкиваться с фактом разницы при мердж конфликте хуже, чем видеть сложность сразу.
Как ветки будут выглядеть сейчас
!Показывает «куда залить, чтобы появилось в Х». Не учитывает фича-флаги.
Показывает «куда залить, чтобы появилось в Х». Не учитывает фича-флаги.
Главное здесь то, что теперь ветка ≠ окружение. Все энвы, докеры, пайплайны и прочее есть на любой ветке. Также и весь протестированный, не ломающий работу системы функционал лучше скорее возвращать в main.
Ветка – это не способ разделить код, ветка – это способ изолировано разработать будущие изменения. Они обязаны оказаться в main. Разница веток всегда должна быть только временной.
К чему мы стремимся в будущем
!image.png
Остаются только две бессрочные ветки:
- Ветка
mainхранит весь протестированный (мы надеемся) и актуальный код. Еще раз отметим – не только продакшен код – весь не ломающий работу системы. - Ветка
stage(название не утверждено) используется для тестирования и показа функционала. В методологии у которой мы списывали такой ветки нет, все сразу идет в главную, но в наших реалиях без покрытия тестами она необходима.
Мы также рассматриваем возможность создавать временные ветки для защиты контракта и других мероприятия, чтобы изолировать функционал. Но такие ветки обязаны иметь жизненный цикл и быть удалены по итогу. В то же время фича-флаги остаются в приоритете.
Бекенд здесь нарисован схематично. Там еще изучается возможность реализации такого подхода, но в любом случае тенденция сохраняется та же.
!image.png