крюк gitolite для специфического репозитория

Я не понимаю, как создать крюк post-receive для конкретные репозиторий в gitolite (некорневая установка)

мой голый репозиторий содержит веб-сайт, который должен скопировать рабочий каталог в docRoot (GIT_WORK_TREE=/path/htdocs git checkout -f) на обновление

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

что должно быть имя крючков, где оно должно быть расположено и как его структура должна быть изменена (если она должна)?

2 ответов


Update июль 2013: что следует для gitolite V2 (или 'g2'), который был версией, используемой OP в то время (ноябрь 2011).

обновление август 2013, с последним gitolite 3.икс: Теперь у вас есть официальный специфический крюк РЕПО:

это в основном просто создание символической ссылки в <repo.git>/hooks указывая на какой-то файл внутри $rc{LOCAL_CODE}/hooks/repo-specific (кроме gitolite-admin РЕПО)


все крючки в gitolite/hooks/common реплицируются во всех репозитории, управляемые Gitolite, как описано в документация по распространению крюка.
Это означает, что ваш скрипт hook должен выполнять определенные действия в зависимости от РЕПО, которое выполняет этот крюк.

вы можете использовать $GL_REPO переменная (которую gitolite устанавливает и передает всем своим скриптам для любой команды git, которую он получает).

или вы можете использовать некоторую конфигурацию git, зарегистрированную на сервере gitolite, например зеркальное отображение крюк. Вижу post-receive.mirrorpush крючком.

на OP Eyal R добавляет в комментарии:

но я все равно не понимаю как это делается (я понимаю, что $GL_REPO используется для определения того, какое РЕПО я обновляю, но мне не хватает практической части).
Я создал файл под названием post-receive.test С echo "test", положил его в $HOME/gitolite/hooks/common, управлял gl-setup, запустил push с рабочей станции-ничего не происходит (нет"test" выход)

для на что я ответил:--17-->

крюк должен появиться в hook каталог вашего РЕПО на сервере gitolite в качестве ссылки, ССЫЛКА обратно на .gitolite/common/hook. Обратите внимание, что он должен быть в $HOME/.gitolite/common/hook, а не /gitolite.

OP подтверждает, что пропавшая точка была проблемой.

процесс добавления крючка подробно описан в распространение крюк в gitolite'е, и их использование в "С Помощью Крюков".


это довольно распространенная потребность для кого-то, кто использует gitolite, и, похоже, немного сложно связать свободные концы, когда он не очень продвинутый пользователь (по крайней мере, для меня).

после ссылок stackoverflow и gitolite взад и вперед может быть немного запутанным. Таковы мои выводы и путь, по которому я шел, чтобы достичь этого.

как @VonC упоминал, создание определенных крючков репозитория уже возможно, так как версия 3.5.3.1 (ссылка github)

Обновление / Обновление Gitolite

первое, что вам нужно сделать, это обновить репозиторий gitolite. Так что ssh на ваш сервер, на котором размещен gitolite, и перейдите в место, где установлен gitolite (обычно /home/git/gitolite) как пользователь git (обычно git)

пример:

$ ssh myusername@devserver.com
$ sudo su - git
$ pwd
/home/git
$ cd gitolite

то мы должны обновление gitolite. Для этого сначала нам нужно обновите репозиторий gitolite

$ git pull

тогда мы должны повторить команда установки (убедитесь, что вы используете те же аргументы, что и раньше)

$ ./install

и, наконец, запустите установку снова.

$ gitolite setup

если это не работает, вы, вероятно, не настроили исполняемый файл gitolite в своем PATH, чтобы вы могли сделать что-то вроде этого:

$ src / gitolite setup

настройки Gitolite ("RC" файл)

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

знаменитый файл " rc " находится в домашнем каталоге git /home/git/.gitolite.rc. Там убедитесь, что у вас есть переменная LOCAL_CODE, вы должны увидеть что-то подобное в этом файле, если нет, добавьте его.

LOCAL_CODE => "$ENV{HOME}/.gitolite/local"

и в разделе "команды функция для включения" вы должны убедиться, что repo-specific-hooks доступно, если нет, добавить он.

ENABLE => [

    # COMMANDS

        # These are the commands enabled by default
        'help',
        'desc',
        'info',
        ...,
        ...,
        ...,
        'repo-specific-hooks'
        ...,
        ...,
        ...
]

вот ссылка на документацию

Написание Специфических Крючков Репозитория

наконец, в свой местные gitolite-admin репозиторий создайте следующие каталоги hooks/repo-specific в каталоге, который вы только что установили в LOCAL_CODE переменной, например:

gitolite_admin/local/hooks/repo-specific

после этого вы можете добавить свои скрипты hooks в это место и управлять ими через gitolite conf файл как указано в документации. Убедитесь, что скрипты исполняемы.

repo foo
RW+                       =   @all
option hook.post-receive  =   deploy

опять же, я надеюсь, что это помогает некоторым из вас.

Ура!