В чем разница между стратегиями управления ветками Trunk-based и Feature Branch?

Ответ

Это две противоположные стратегии Git-воркфлоу.

Trunk-based Development

  • Суть: Все разработчики работают в одной короткоживущей ветке (обычно main/trunk).
  • Принципы:
    • Частые мелкие коммиты прямо в main (несколько раз в день).
    • Минимум долгоживущих веток.
    • Обязательное использование Feature Flags для скрытия незавершенного функционала.
  • Преимущества: Снижает сложность слияний, ускоряет интеграцию и обратную связь, является основой для CI/CD.
  • Недостатки: Требует высокой дисциплины, мощного набора тестов и инфраструктуры.

Feature Branch Workflow

  • Суть: Каждая новая функция или задача разрабатывается в изолированной долгоживущей ветке.
  • Принципы:
    • Ветка создается от main, в ней ведется вся разработка.
    • Слияние с main происходит через Pull/Merge Request после ревью и тестирования.
  • Преимущества: Хорошая изоляция изменений, четкий процесс ревью, понятная история.
  • Недостатки: Ветки могут жить долго, что приводит к болезненным слияниям (merge hell), замедляет интеграцию.

Сравнение в коде:

# Trunk-based: прямой коммит в main после локальных тестов
git checkout main
git pull origin main
git commit -m "feat: add user validation"
git push origin main

# Feature Branch: изолированная разработка
git checkout -b feature/user-validation
git commit -m "WIP: add validation logic"
git push origin feature/user-validation
# Далее создается Pull Request для слияния в main

Итог: Trunk-based нацелен на скорость и непрерывную интеграцию, Feature Branch — на контроль и изоляцию.

Ответ 18+ 🔞

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

Trunk-based Development, или, как я это называю, «живи быстро, умри молодым».

  • Суть в чём? Все, сука, как стадо баранов, работают в одной ветке, обычно main. И коммитят туда по пять раз на дню, как будто от этого зависит их зарплата.
  • Как это работает?
    • Мелкие коммиты, прям в main, хоть каждый час. Никаких долгих веток, блядь, чтобы потом не разбираться, где чей пиздёж.
    • Обязательно нужны Feature Flags — это такая хитрая жопа, чтобы скрыть недоделанный функционал, пока он не готов. Без них — пиздец и сломанный прод.
  • Чем хорош? Меньше еболи с мерджами, всё быстро интегрируется, обратная связь — мгновенная. Это основа для настоящего CI/CD, когда ты каждый коммит можешь на прод выкатить, если не бздишь.
  • Чем плох? Требует, чтобы вся команда была не распиздяями, а дисциплинированными инженерами с овердохуищем автотестов. Без этого — просто анархия и всё падает.

Feature Branch Workflow, он же «классика для параноиков».

  • Суть в чём? Каждая фича — в своей отдельной, долгоживущей ветке. Сиди там, как в бункере, и не высовывайся, пока не сделаешь.
  • Как это работает?
    • От main создал ветку, назвал feature/какая-то-хуйня, и копайся в ней неделями.
    • Когда всё готово — делаешь Pull/Merge Request, все это смотрят, комментируют, а потом уже сливают в main.
  • Чем хорош? Изоляция — полный пипец. Никто никому не мешает. Ревью — процесс понятный, история изменений — чистая.
  • Чем плох? А тем, что ветка может жить месяц, а потом при мердже выяснится, что main ушёл на три версии вперёд, и тебе придётся решать конфликты до второго пришествия. Это и есть тот самый merge hell, про который легенды ходят.

Вот, смотри, как это в коде выглядит, чтобы совсем понятно было:

# Trunk-based: Разбежался и прыгнул в main, как в омут.
git checkout main
git pull origin main
git commit -m "feat: add user validation"
git push origin main

# Feature Branch: Создал свою песочницу и сидишь в ней, как в тюрьме.
git checkout -b feature/user-validation
git commit -m "WIP: add validation logic"
git push origin feature/user-validation
# Потом ещё уговаривай кого-то, чтобы твой Pull Request приняли, блядь.

Итог-то какой? Trunk-based — это для спринтеров, которые хотят всё и сразу, но рискуют споткнуться на первом же камне. Feature Branch — для марафонцев, которые идут медленно, но уверенно, рискуя застрять в болоте мерджей. Выбирай, что ближе твоей команде по духу, а то, бывает, начнёшь внедрять trunk-based в коллективе из пяти параноиков — волнение ебать, все с ума посходят.