Найти тему

Trunk-based Development

Статья подготовлена для студентов курса «DevOps практики и инструменты» в образовательном проекте OTUS.

В процессе разработки кода программистам не обойтись без инструмента по версионности и контролю изменений. Одна из наиболее известных и популярных систем контроля версий — git (изменение кода можно зафиксировать и у этого изменения будет специальная метка). В результате вся история процесса разработки видна программистам, что очень удобно.

Однако когда команда ведёт работу над одним и тем же кодом, рекомендовано придерживаться следующих правил:

- «не ломать» текущий рабочий код;

- не мешать друг другу, работая в одной ветке.

Для решения проблем взаимодействия разработчиков друг с другом в git есть различные подходы, например, git-flow. Работа с ветками является одной из основных в git-flow и это один из главных его недостатков. Постоянные merge и конфликты при слиянии, а также сама суть в долгосрочных ветках могут сыграть злую шутку против разработчиков. И если говорить об итеративной разработке, то при больших промежутках времени между релизами с git-flow можно подружиться, но когда речь идёт о более частых релизах, всё становится гораздо сложнее.

В данной ситуации предпочтительнее выглядит Trunk-based Development — подход, который сегодня широко используется такими крупными компаниями, как Google и Facebook. Он также основан на ветвлении, однако второстепенные ветки имеют короткий срок жизни: от нескольких часов до нескольких дней. Из этого нюанса и вытекает концептуальная идея Trunk-based Development, которая заключается в том, что в конце работы с кодом в рамках временной ветки все изменения так или иначе должны попасть в основную master-ветвь.

Кроме того:

- есть требования к контролю качества кода (в master-ветку попадает уже протестированный рабочий код, что повышает его стабильность, детали — здесь);

- все релизы делаются только из master-ветки.

При этом взаимодействие между разработчиками в рамках временной ветки — вполне нормальное явление (можно делать brunch нашей задачи, получать комментарии, выполнять изменения и дополнения, возвращать исправленные фрагменты кода в мастер-ветку).

-2

Вот, пожалуй, и всё на сегодня. Если хотите получить более глубокие знания по инструментам синхронизации, записывайтесь на курсы OTUS по DevOps!

Интересуют нюансы работы Trunk-based Development? Задавайте вопросы в комментариях!