Atomic Flow: дисциплина Git в критических проектах

Доклады вне привычной рамки

Архитектуры, теория программирования
Tarantool
Архитектурные паттерны
Отказоустойчивость
Стандарты кодирования
Рефакторинг
Методы и техника разработки ПО
Разработка библиотек, включая open source библиотеки
Инструменты

Программный комитет ещё не принял решения по этому докладу

Целевая аудитория

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

Тезисы

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

В основе Git лежат ключевые концепции, такие как коммиты, история изменений, ветвление, rebase и merge. И хотя Git богат и на другие возможности, именно вышеперечисленные (субъективно) составляют его суть. Неправильное их использование способно привести к значительным потерям качества кода и времени людей, тогда как альтернативные подходы упрощают разработку на всех уровнях и приносят пользу сообществу проекта (если оно есть).

В этом докладе я поделюсь собственным опытом о том, как применение этих опорных концепций в реальных проектах может заметно ускорить и упростить разработку, особенно в критически важных системах. Я расскажу о следующих темах с примерами из своей работы, как в открытых, так и в закрытых проектах:

  • Важность «атомарности» коммитов и что это значит.
  • Цена и выгода поддержания чистой истории коммитов.
  • Как мульти-коммитные патчи могут ускорить разработку и ревью кода.
  • Использование rebease как метода создания патчей.
  • Merge-Commits vs Fast-Forward.

Все это упаковано в метод работы с Git-ом, который я назвал Atomic Flow.

Многие команды придерживаются строгих правил работы с Git, вращающихся вокруг перечисленных тем, и это очень даже оправдано. Я работал в проектах, которые использовали потенциал Git с самого начала, а также в тех, которые поначалу игнорировали все кроме commit + merge, но позже расширили использование Git-а и заметно выиграли. Моя цель - помочь большему числу команд повысить эффективность, узнать практики Git получше, особенно если их проекты зависят от безупречного качества кода и лёгкости его сопровождения.

Старший разработчик в двух компаниях: Virtual Minds GmbH и Tarantool от VK Tech. Ex-Ubisoft. В разработке с 2014 года, высоконагруженные критические системы: базы данных, крупные игры, рекламные технологии. Регулярный ежегодный докладчик на крупных конференциях. Читаю курс лекций по системному программированию.

Видео

Другие доклады секции

Доклады вне привычной рамки