Cómo instalar / configurar Git :: Hooks para usar con Gerrit

El Git :: Hooks es un marco Perl para implementar ganchos Git / Gerrit. ¿Cuál es el procedimiento para instalarlo y configurarlo para usarlo con Gerrit?

Instalación

1) Instalar dependencies:

Ubuntu:

sudo apt-get install gcc make libcrypt-ssleay-perl 

Sombrero rojo:

 sudo yum install gcc make libcrypt-ssleay-perl 

2) Instalar Git :: Hooks:

 sudo cpanm Git::Hooks sudo cpanm Gerrit::REST sudo cpanm JIRA::REST 

Configuración

1) Cree el parche de ganchos Gerrit creado y borrador publicado (con permiso de ejecución) en el directory GERRIT-SITE / hooks, con el siguiente contenido:

 #!/usr/bin/env perl use Git::Hooks; $ENV{HOME}="/home/GERRIT-USER"; run_hook($0, @ARGV); 

2) Configure los repositorys de Gerrit:

Cualquier repository se puede configurar individualmente, pero es más fácil configurar el proyecto de todos los proyectos en el file GERRIT-SITE / git / all-projects.git / config, como en el siguiente ejemplo (algunas configuraciones pueden agregarse / eliminarse según sea necesario):

 ... [githooks] plugin = CheckJira plugin = CheckLog plugin = CheckFile nocarp = 1 [githooks "gerrit"] url = https://GERRIT-SERVER username = GERRIT-USER password = GERRIT-PASS votes-to-approve = Verification+1 votes-to-reject = Verification-1 comment-ok = OK notify = OWNER [githooks "checkjira"] jiraurl = https://JIRA-SERVER jirauser = JIRA-USER jirapass = JIRA-PASS matchlog = (?s)^(?:Revert\\s\")?\\s*\\[([^]]+)\\] status = In Progress status = Analysing status = Treating status = Evaluating status = Waiting Information [githooks "checklog"] title-requinetworking = 1 title-max-width = 60 body-max-width = 80 [githooks "checkfile"] sizelimit = 5242880 name = *.p[lm] /usr/local/bin/perlcritic --stern --verbose 5 name = *.pp /usr/local/bin/puppet-lint --error-level error --with-context --with-filename name = *.sh LANG=en_US.UTF-8 /usr/bin/shellcheck --exclude=SC2046,SC2053,SC2086 name = *.erb /usr/bin/erb -P -x -T - {} | ruby -c ... 

Y luego incluya la configuration de todos los proyectos en todos los repositorys agregando el folling en GERRIT-SITE / git / REPO.git / config

 [include] path = GERRIT-SITE/git/all-projects.git/config 

Si es necesario, se puede cambiar / agregar cualquier configuration en algún repository específico cambiando el GERRIT-SITE / git / repo.git / config como en el ejemplo siguiente (algunas configuraciones pueden agregarse / eliminarse según sea necesario):

 ... [githooks] plugin = CheckWhitespace [githooks "checkjira"] require = 0 unresolved = 0 ... 

Para get más información sobre las opciones de configuration de Git :: Hooks, consulte aquí .

3) Reiniciar el server de Gerrit

 GERRIT-SITE/bin/gerrit.sh restart 

o

 service gerrit restart