Мы используем git с центральным репо (используя Gitosis). Я создал крюк post-receive для генерации сообщения электронной почты в список рассылки dev, когда изменения переносятся в центральное репо, и для создания документации из папки документации в git repo.Git post-receive hook не работает
Следовательно, в ~ git/у меня есть каталог, мы будем называть его 'a', который содержит клон git repo. Пост-приемный крючок выглядит так:
#!/bin/bash
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
(cd ~git/a && git pull &> ~git/pull_log.log && php ~git/a/scripts/generate_markdown_documentation.php &> ~git/doc_log.log)
Письменный скрипт работает, но генерации документации нет. Содержание pull_log.log является:
fatal: Not a git repository: '.'
Что заставляет меня думать, что это не меняется в нужную директорию в строке 5 вышеприведенного сценария. Я ошибаюсь? Как я могу заставить это работать?
Редактировать: Я обновил крюк после приема, как было предложено в ответах. Сценарий теперь:
#!/bin/bash
function die {
echo "$*" >&2; exit 1
}
function checkgit {
[ -d "$1/.git" ] || die "$1 could not possibly be a git repo; $1/.git is not a dir"
}
cd ~git/repositories/a.git
. ~git/post-receive-email &> /dev/null
(set -x
checkgit ~git/a
cd ~git/a
checkgit .
pwd
git pull
php ~git/a/scripts/generate_markdown_documentation.php)
И я получаю следующий выход из мерзавца толчка:
+ checkgit /var/git/a
+ '[' -d /var/git/a/.git ']'
+ cd /var/git/a
+ checkgit .
+ '[' -d ./.git ']'
+ pwd
/var/git/a
+ git pull
fatal: Not a git repository: '.'
+ php /var/git/a/scripts/generate_markdown_documentation.php
Любой помощь?
О, и если я бегу сценарий сам, это работает (я запускаю его, говоря, Крючки/после приема)
Обнаруженные проблемы, благодаря serverfault - в основном, переменные окружения GIT_DIR
и GIT_WORK_TREE
установлены когда крюк бежит, и они влияют на git тянуть неблагоприятно. Исправление переменных устраняет проблему.
Измените 'git pull' на' pwd' и посмотрите, что отображается в журнале. –
Oooh! Насти. +1 для отслеживания проблемы и ее убийства! –
Как вы нашли файл pull_log.log? Я не знаю, где хранятся журналы ... – munmunbb