крюк 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
опять же, я надеюсь, что это помогает некоторым из вас.
Ура!