Как превратить историю Git-репозитория в захватывающее кино
Репозиторий давно не обновлялся
Последнее обновление было 6 месяцев назад.
Представьте, что вы приходите в новый проект с огромным легаси. Тысячи коммитов, сотни разработчиков, папки, которые никто не открывал годами. Можно часами листать git log или изучать структуру каталогов, а можно запустить одну команду и увидеть, как проект рос, дышал и менялся в реальном времени.
Речь пойдет о Gource. Это инструмент, который превращает скучные логи систем контроля версий в живую анимацию. Я наткнулся на него довольно давно, но до сих пор считаю, что это лучший способ визуализировать «пульс» разработки.
Что это вообще такое
Gource — это опенсорсный визуализатор, который строит дерево репозитория. Корень проекта — в центре, папки — это ветви, а файлы — светящиеся листочки. Самое интересное начинается, когда появляются «человечки» (аватары разработчиков). Они летают между файлами, стреляют в них лазерами при изменении, создают новые ветки и удаляют старые.
Это не просто красивая картинка для презентации перед заказчиком. Когда смотришь на ускоренную историю разработки за пять лет, начинаешь замечать странные вещи. Например, как один человек в одиночку переписывает половину проекта за выходные, или как целые разделы кода «отмирают» и исчезают.
Как это работает на практике
Инструмент написан на C++ и использует OpenGL для рендеринга. Чтобы все летало плавно, вам понадобится видеокарта с 3D-ускорением. Gource понимает Git, SVN, Mercurial и Bazaar из коробки.
Самый простой способ запустить его в папке с проектом:
gource
Если проект старый и большой, лог может генерироваться долго. В таких случаях лучше сначала выгрузить данные в файл, а потом уже скармливать его утилите. Для SVN это особенно актуально, чтобы не нагружать сервер лишними запросами.
gource --log-command svn > my-project.log
gource my-project.log
Что можно настроить
Gource — это настоящий комбайн с десятками флагов. Можно поменять почти все: от разрешения экрана до скорости «старения» файлов.
Вот несколько полезных параметров, которые я использую чаще всего:
-s: количество секунд, за которые проходит один день разработки. По умолчанию стоит 10, но для старых проектов лучше ставить 1 или даже меньше, иначе видео затянется на часы.--auto-skip-seconds: если в проекте были периоды затишья (например, месяц никто ничего не коммитил), Gource просто пропустит это время.--user-image-dir: можно подсунуть папку с фотографиями команды. Тогда вместо стандартных аватарок над файлами будут летать реальные лица коллег.--key: выводит легенду с расширениями файлов. Сразу видно, когда в проекте стало больше.tsфайлов и меньше.js.
Кстати, если вы хотите сделать из этого полноценный ролик для YouTube, Gource умеет отдавать поток кадров в формате PPM. Его можно подхватить через ffmpeg и собрать в видео с любым кодеком.
Зачем это разработчику
Помимо чисто эстетического удовольствия, у Gource есть вполне прикладные кейсы.
Во-первых, это отличный инструмент для онбординга. Показать новичку 2-минутный ролик о том, как проект превратился из маленького скрипта в огромный монолит, гораздо эффективнее, чем объяснять это на словах. Видно, какие части кода самые активные, а какие — стабильные и почти не меняются.
Во-вторых, это крутой способ подвести итоги года. Мы в одной команде запускали Gource на корпоративе, чтобы вспомнить, через какой ад прошли при рефакторинге ядра. Это создает крутое чувство общности.
В-третьих, это помогает выявить «автобусный фактор» (bus factor). Если на визуализации видно, что к огромному куску дерева (важному модулю) подлетает только один аватар на протяжении года — у вас проблемы.
Тонкости управления
Во время просмотра можно не просто сидеть и смотреть. Gource интерактивен:
- Пробел ставит симуляцию на паузу. В этот момент можно мышкой потыкать в файлы и посмотреть, кто их трогал последним.
- Клавиша V переключает режим камеры. Она может либо следить за активностью, либо показывать все дерево целиком.
- Клавиши + и - меняют скорость симуляции прямо на лету.
Gource — это не тот инструмент, который вы будете использовать каждый день. Но это чертовски мощная штука для анализа истории и презентации работы команды. Он превращает абстрактные строки кода в осязаемую структуру.
Если у вас есть проект, которому больше года, обязательно попробуйте запустить на нем Gource. Гарантирую, вы залипните минимум на 15 минут, рассматривая, как суетились ваши коллеги (и вы сами) в прошлом году.
Проект живет на GitHub уже больше десяти лет, стабилен и поддерживается автором. Лицензия GPL v3 позволяет использовать его без особых ограничений.
С чего начать? Просто установите его через ваш пакетный менеджер (например, brew install gource на Mac или apt install gource на Ubuntu) и запустите в корне любого репозитория.
