Как это часто бывает в мире открытых исходников, Gerrit появился в виде набора патчей к другому проекту. Изначальной целью было добавить поддержку ACL в Rietveld — систему ревизии кода, которую написал на Python автор самого Python Гвидо ван Россум (нидерл. Guido van Rossum). Из-за того, что Гвидо не захотел усложнять код Rietveld, появился «форк» последнего под названием Gerrit.
В дальнейшем Gerrit был переписан с Python на Java и таким образом стал совершенно самостоятельным проектом. На данный момент Gerrit используют такие компании и проекты как «eBay», «Sony», «Couchbase», «MediaWiki», «Rockbox» и «Qt», но самым известным пользователем Gerrit, вероятно, является проект по разработке Android, для которого Gerrit и был написан.
Как понятно уже из этого, Gerrit - это инструмент для групповой работы с проектом.Принцип работы
Разработка с использованием Gerrit выглядит следующим образом:
- создаётся репозиторий в Gerrit;
- разработчик клонирует репозиторий из Gerrit (или добавляет git remote в уже существующий проект);
- с помощью git push разработчик отправляет изменения для ревизии кода в специальную ветвь репозитория;
- для каждой записи изменения Gerrit создаёт отдельный «тикет», который ревизор может откомментировать, применить или отвергнуть.
Ну и дальше в публикации по-простецки объясняется установка и использование Gerrit.
И в итоге:
В заключение надо также признать, что изначальная цель, с которой мы внедряли Gerrit, так и не была выполнена — бесполезно пытаться «познакомить» с кодом разработчика, который только просматривает его, но не участвует в обсуждении проекта и не понимает, почему код такой, какой он есть. Но система ревизии кода прекрасно работает в случае уже существующего проекта, где разработчиков можно разделить на «владельцев», которые отвечают за проект в целом и рассматривают изменения других, и «участников», которые могут присылать свои изменения к проекту без возможности применять их напрямую. Поэтому, несмотря на все свои недостатки, наш отдел принял Gerrit на вооружение и успешно использует его для всех текущих проектов.