Как настроить Git-хук после получения электронной почты с помощью Gitolite - PullRequest
15 голосов
/ 20 февраля 2011

Я использую post-receive-email ловушку из дистрибутива Git для отправки электронных писем определенным пользователям при обновлении хранилища Git (ловушка вызывается из post-receive).

Все мои хранилища управлялись вручную.Теперь у меня так много репозиториев и так много пользователей и групп, что мне нужно обновить систему управления Git-репозиториями.Я выбрал Gitolite.

Но я немного растерян, как настроить уведомления по электронной почте.

Обновление: я немного уточню вопрос:

Первый вопрос: куда я должен положить крючок, и должен ли я как-то его изменить, чтобы он работал с Gitolite?

Второй вопрос:

Стандартный post-receive-email зависит от крючкапо трем параметрам в *.git/config: hooks.envelopesender, hooks.emailprefix и hooks.mailinglist.

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

Я бы не хотел редактировать файл config для каждого хранилища вручную.Было бы гораздо веселее, если бы я мог настроить все в одном и том же централизованном месте для всего Gitolite.

Итак, есть какие-нибудь подсказки?

Ответы [ 4 ]

18 голосов
/ 21 февраля 2011

Вы можете взглянуть на док документ для начала:

куда я (админ) ставлю крючки?

В общем, все крючкиперейдите в каталог hooks/common.Только специальный хук после обновления, предназначенный для репо admin, входит в hooks/gitolite-admin.

Но документ GitoliteV3 по «зеркалированию» обеспечиваетальтернатива пользовательскому крюку.


По второму вопросу:

Я бы не хотел редактировать файл конфигурации для каждого репозитория вручную.
Было бы гораздо веселее, если бы я мог все настроитьв том же централизованном месте для всего Gitolite.

doc gitolite.conf совершенно ясен:

специфичные для репозитория команды git config

Иногда вы хотите указать git config настройки для некоторых ваших репозиториев.
Например, у вас может быть настраиваемый хук после получения, который отправляет электронное письмо, когда происходит толчок, и этот хук должен знатькому отправить электронное письмо и т. д.

Вы можете установить git config значения, указав что-то вроде этого в абзаце «репо»:

пример использования: если вы поместили хук в hooks/common, для которого требуется информация о конфигурации, характерная для каждого репо, вы можете сделать это:

repo gitolite
    config hooks.mailinglist = gitolite-commits@example.tld
    config hooks.emailprefix = "[gitolite] "
    config foo.bar = ""
    config foo.baz =

Синтаксис простой:

config sectionname.keyname = [optional value_string]

Это либо просто "git config section.key value" (для первого3 примера выше) или "git config --unset-all section.key" (для последнего примера).
Другие формы (--add, value_regex и т. Д.) Не поддерживаются.

Примечание: это не будетработать, если файл rc не имеет правильных настроек;см. комментарии к переменной $GL_GITCONFIG_KEYS $GIT_CONFIG_KEYS (теперь GitoliteV3 или 'g3' ) в gitolite rc file для получения подробной информации и информации о безопасности.

6 голосов
/ 03 марта 2011

на данный момент это не работает:

repo @all
    config foo.bar = "baz"

Полагаю, вы хотели бы, чтобы это сработало, но сейчас оно немного в моем списке из-за других проблем и того, что есть обходной путь:

@almostall = repo1 repo2 repo3
@almostall = repo4 repo5 repo6 [add as many more as you like]

[... later ...]
repo @almostall
    config foo.bar = "baz"

Надеюсь, что это помогает, и извините за недосмотр @ all

1 голос
/ 13 февраля 2018

В поваренной книге gitolite рассказывается, как настроить крючки:

1. Включить локальные неосновные программы в gitolite

Отредактируйте файл конфигурации gitolite (обычно ~git/.gitolite.rc) и раскомментируйте следующую строку:

LOCAL_CODE => "$rc{GL_ADMIN_BASE}/local"

Обязательно прочитайте предупреждения безопасности.

2. Включить специфичные для репозитория перехваты

Раскомментирование строки repo-specific-hooks в файле конфигурации gitolite.

3. Добавьте адрес электронной почты крючок

Установите соответствующий исполняемый файл ловушки после получения (я использую git-multimail ) в вашем gitolite-admin хранилище в виде файла /local/hooks/repo-specific/git-multimail.

Зафиксируйте и нажмите его.

4. Настроить настройки для перехвата мультипочты

Чтобы разрешить добавление ключей конфигурации через файл конфигурации gitolite отредактируйте файл конфигурации gitolite ~git/.gitolite.rc и обновите следующую строку:

GIT_CONFIG_KEYS => ".*"

Убедитесь, что прочитали предупреждение безопасности. Вы можете сузить его до GIT_CONFIG_KEYS => "multimailhook\..*".

5. Настройка перехвата электронной почты

Это пример конфигурации файла gitolite.conf в репозитории gitolite-admin :

repo @all
    config multimailhook.environment      = gitolite
    config multimailhook.from             = git@gitserver.com
    config multimailhook.mailinglist      = your@email.com

repo xyz
    option hook.post-receive = git-multimail

Я решил использовать специфичные для репо хуки и хранить их в репозитории gitolite-admin. В качестве альтернативы вы можете использовать глобальные хуки (/local/hooks/common) или хранить их где-то еще на сервере gitolite и указывать LOCAL_CODE там.

1 голос
/ 24 августа 2011

Вот быстрый вкладыш для добавления описаний в ваш gitolite.conf с тем же именем, что и в репо.Вам это нужно, если вы используете этот большой подход @almostall и gitolite, чтобы у вас были описания для каждого репо.Это сэкономило мне час печатания, поэтому пришлось поделиться:

Попробуйте сначала:

sed 's/^\(repo *\)\(.*\)/\1\2\n\t\t\2 = "\2"/' gitolite.conf

Затем попробуйте с правкой на месте, но все равно сделайте резервную копию до:

cp gitolite.conf gitolite.conf.backup

Затем отредактируйте на месте:

sed -i 's/^\(repo *\)\(.*\)/\1\2\n\t\t\2 = "\2"/' gitolite.conf

Приветствия!

...