Ответ
Это две противоположные стратегии 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 в коллективе из пяти параноиков — волнение ебать, все с ума посходят.