Pull to refresh

Больше комитов, хороших и разных

Reading time 2 min
Views 7.6K
На мой взгляд, самый лучший способ освоить что-нибудь новое в программировании — изучать комиты в публичные репозитории.
Тут вам и предельная практичность, best practices, большое разнообразие и прочее. Есть только один неприятный момент — далеко не каждое изменение в репозиторий можно считать поучительным или хоть сколько нибудь информативным.
Более того, практически никогда нельзя восстановить полный контекст, в котором появилось то или иное изменение — его может знать только сам автор. Можно ли в таких условиях все-таки вытащить крохи полезной информации?

Итак, еще раз сформулирую исходное положение:

  • Имеем набор комитов в разные публичные репозитории
  • Контекст, который породил изменения, содержащиеся в комитах, не известен
  • В этом наборе комитов содержатся такие, которые несут мудрость или просто интересны


Возникает вопрос, как отделить «мух от котлет» — можно ли выделить из общей кучи те изменения, которые будут нам полезны? Первая мысль, которая приходит в голову — придумать правило, согласно которому ранжировать поступающие комиты и отбирать из них «лучшие» (те, которые лучше соответствуют придуманному правилу). Это самое правило, конечно, не может быть одним — это слишком просто) Скорее всего, оно должно быть совокупностью более мелких правил, которые ограничивают определенные параметры. Например:

  • Размер изменения. Врядли кто-то будет читать огромные комиты в тысячи строк
  • Соответствие языку программирования. Для каждого репозитория есть основной язык программирования, и весь основной код пишется на нем. Но есть еще и куча сопровождающих файлов (скрипты для автоматизации, конфигурационные файлы, документация), которые тоже подвержены изменениям. Конечно, они не представляют особого интереса без контекста
  • Отношение автора к сделанному изменению. Это единственное, что можно выдернуть из контекста — никто не может оценить сделанную работу лучше, чем сам программист. Поэтому если он пишет в комментарии «magic (ugly dirty hack)!», врядли стоит рассматривать данный комит, как предел совершенства. Помимо комментария к комиту также полезно проанализировать комментарии в самом изменении


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

Примерно такие мысли крутились у меня в голове некоторое время назад, и я решил воплотить их в виде web сервиса thebestcommits.info. Это еще очень сырой прототип, в котором реализован только основной функционал. Сервис в почасовом режиме забирает с githubarchive.org данные о комитах на Github, анализирует их и отображает в виде слайдов презентации на странице браузера. Внутренности состоят из Golang и Python, графическое представление реализовано с помощью reveal.js

Мне интересно мнение сообщества об этой идее. Является ли она достаточно интересной, чтобы развивать ее дальше?
Only registered users can participate in poll. Log in, please.
Интересна ли вам эта идея?
60% Да, интересна — возможно, буду пользоваться 150
40% Нет, бесполезная штука 100
250 users voted. 92 users abstained.
Tags:
Hubs:
+17
Comments 11
Comments Comments 11

Articles