Skip to main content

Що таке Trunk-Based Development?

Trunk-Based Development (TBD) - це Git-підхід, при якому вся команда працює навколо однієї основної гілки (зазвичай main або trunk), а зміни в неї потрапляють дуже часто і маленькими порціями.

Простіше кажучи: «Одна головна гілка, часті коміти, мінімум довгоживучих гілок».


Основна ідея Trunk-Based Development

  • є одна центральна гілка - main / trunk
  • розробники:
    • або комітять напряму в неї (із захистами),
    • або використовують дуже короткоживучі feature-гілки (години або 1-2 дні)
  • код постійно інтегрується і тестується

Жодних тижневих feature-гілок.


Як виглядає робота на практиці

Варіант 1: узагалі без feature-гілок

  1. Взяв задачу
  2. Зробив маленьку зміну
  3. Прогнав тести
  4. Закомітив у main

Варіант 2: з короткими feature-гілками

  1. Створив гілку від main
  2. Зробив невелику частину задачі
  3. Відкрив PR
  4. Влив у main того ж дня
  5. Видалив гілку

Як при цьому не зламати продакшн

У Trunk-Based Development майже завжди використовують:

  • feature flags (feature toggles) - код у main, але вимкнений
  • суворий CI
  • автотести
  • заборону великих PR

Код може бути в main, але недоступний користувачам.


Чим відрізняється від Feature Branch Workflow

Feature BranchTrunk-Based
Довгі feature-гілкиКороткі або без гілок
Великі PRМаленькі PR
Інтеграція наприкінціІнтеграція постійно
Конфлікти пізнішеКонфлікти раніше і простіше

Переваги Trunk-Based Development

  • Дуже швидкі релізи
  • Менше merge-конфліктів
  • Постійна інтеграція
  • Чудово підходить для CI/CD

Недоліки

  • Вимагає високої дисципліни
  • Потрібні хороші тести
  • Без feature flags - ризиковано
  • Складніше для новачків

Коли Trunk-Based Development підходить

  • часті релізи (кілька разів на день)
  • CI/CD
  • продукт активно розвивається
  • команда досвідчена
  • важлива швидкість постачання

Коли не підходить

  • рідкісні релізи
  • великі фічі без флагів
  • слабкі тести
  • недосвідчена команда

Коротка відповідь для співбесіди

Trunk-Based Development - це підхід, при якому розробка ведеться навколо однієї основної гілки, а зміни вливаються в неї часто і маленькими порціями, що спрощує інтеграцію і прискорює релізи.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.