Как установить / настроить Git::Hooks для использования с Gerrit
Git::Hooks - это среда Perl для реализации хитов Git/Gerrit. Как установить и настроить его для использования с Gerrit?
1 ответ
Монтаж
1) Установить зависимости:
Ubuntu:
sudo apt-get install gcc make libcrypt-ssleay-perl
Красная шляпа:
sudo yum install gcc make libcrypt-ssleay-perl
2) Установите Git::Hooks:
sudo cpanm Git::Hooks
sudo cpanm Gerrit::REST
sudo cpanm JIRA::REST
конфигурация
1) Создайте созданный набор исправлений Gerrit hooks и опубликованный черновик (с разрешением на выполнение) в каталоге GERRIT-SITE/hooks со следующим содержимым:
#!/usr/bin/env perl
use Git::Hooks;
$ENV{HOME}="/home/GERRIT-USER";
run_hook($0, @ARGV);
2) Настройте репозитории Gerrit:
Любой репозиторий может быть настроен индивидуально, но проще настроить проект для всех проектов в файле GERRIT-SITE/git/all-projects.git/config, как в следующем примере (некоторые конфигурации могут быть добавлены / удалены по мере необходимости):
...
[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-required = 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
...
А затем включите конфигурацию всех проектов во все репозитории, добавив фоллинг в GERRIT-SITE/git/REPO.git/config
[include]
path = GERRIT-SITE/git/all-projects.git/config
При необходимости любая конфигурация может быть изменена / добавлена в каком-то конкретном репозитории, изменив GERRIT-SITE/git/repo.git/config, как в следующем примере (некоторые конфигурации могут быть добавлены / удалены по мере необходимости):
...
[githooks]
plugin = CheckWhitespace
[githooks "checkjira"]
require = 0
unresolved = 0
...
Чтобы узнать больше о параметрах конфигурации Git:: Hooks, смотрите здесь.
3) Перезапустите сервер Gerrit
GERRIT-SITE/bin/gerrit.sh restart