Гайды Домена

Переход к новым веткам

Почему мы начали переход

Текущий подход ведения гита нам не совсем подходит. Для его соблюдения нужно больше промежуточных веток, дисциплины, а также предварительное планирование связей и релиза фичей.

Из-за частого непонимания когда и что будет залито в прод фичи копятся на стендах и конфликтуют друг с другом. Вы наверняка сталкивались с ситуациями, когда вам понадобился чужой код, который не скоро будет залит в прод. Или когда вы совместно льете в одну область системы с разных веток, постоянно решая конфликты.

Что мы предлагаем

Переход на фича-флаги. Протестированный, не ломающий сайт, но не обязательно готовый функционал можно скрыть от прода и залить обратно в main. Тогда все заранее будут видеть, что с системой происходят изменения.

Мы понимаем риски, что количество развилок в коде возрастет. Мы считаем, что искать код на разных ветках или сталкиваться с фактом разницы при мердж конфликте хуже, чем видеть сложность сразу.

Как ветки будут выглядеть сейчас

!Показывает «куда залить, чтобы появилось в Х». Не учитывает фича-флаги.

Показывает «куда залить, чтобы появилось в Х». Не учитывает фича-флаги.

Главное здесь то, что теперь ветка ≠ окружение. Все энвы, докеры, пайплайны и прочее есть на любой ветке. Также и весь протестированный, не ломающий работу системы функционал лучше скорее возвращать в main.

Ветка – это не способ разделить код, ветка – это способ изолировано разработать будущие изменения. Они обязаны оказаться в main. Разница веток всегда должна быть только временной.

К чему мы стремимся в будущем

!image.png

Остаются только две бессрочные ветки:

  • Ветка main хранит весь протестированный (мы надеемся) и актуальный код. Еще раз отметим – не только продакшен код – весь не ломающий работу системы.
  • Ветка stage (название не утверждено) используется для тестирования и показа функционала. В методологии у которой мы списывали такой ветки нет, все сразу идет в главную, но в наших реалиях без покрытия тестами она необходима.

Мы также рассматриваем возможность создавать временные ветки для защиты контракта и других мероприятия, чтобы изолировать функционал. Но такие ветки обязаны иметь жизненный цикл и быть удалены по итогу. В то же время фича-флаги остаются в приоритете.

Бекенд здесь нарисован схематично. Там еще изучается возможность реализации такого подхода, но в любом случае тенденция сохраняется та же.

!image.png

On this page