История на миллион коммитов: как мы работаем с графом истории в Arc VCS

Platform Engineering

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

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

- разработчики и инженеры, активно работающие с репозиториями и trunk‑based development  - SRE и инфраструктурные инженеры, которым интересны вопросы производительности VCS, оптимизации алгоритмов и работы с огромными объёмами истории коммитов - архитекторы и техлиды, которые проектируют процессы разработки и выбирают инструменты - исследователи и энтузиасты алгоритмов  — аудитория, которая ценит реальные кейсы, «боль» на больших объёмах данных и практические выводы из опыта крупной компании.

Тезисы

В Яндексе активно используют монорепозитории и trunk‑based development — это ускоряет разработку: ежедневно в trunk вливают до 10 000 коммитов, а общая длина ветки превысила 10 миллионов коммитов.

Масштабы выявили ограничения классических алгоритмов (в том числе из git) — пришлось адаптировать и оптимизировать подходы. В докладе расскажу, как мы ускорили работу с историей в Arc VCS на трёх уровнях: 1) лог коммитов: отказ от классического BFS и его оптимизация; 2) история файла: три реализации индекса и сравнение с решениями git, SVN, jj, sapling; 3) blame: создание индекса для отображения авторства каждой строки.

Вы узнаете, как устроены привычные инструменты, где упираются в ограничения по производительности и как их можно ускорить. Покажу одну из самых старых строк в кодовой базе Яндекса — пример кода, который живёт без изменений уже 20 лет.

Юрий Чернышов

Yandex Infrastructure

Ведущий разработчик службы инструментов репозитория

Видео

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

Platform Engineering