Как установить / настроить 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
Другие вопросы по тегам