Ответ 1
В этом SO-ответе есть различные диагностические функции.
В частности, проверьте значение GIT_DIR
и GIT_WORK_TREE
.
Пока хост запущен,
GIT_DIR
и (если рабочая строка не может быть выведена изGIT_DIR
), установитеGIT_WORK_TREE
.
Это означает, что ваше притяжение не будет работать с репозиторием в каталоге, в который вы изменили.
См. также сообщение в блоге Использование Git Внутри Git Hook:
В конце концов, мы получили нашего гуру linux, и он заметил, что среда, в которой работает пользователь Git, полностью отличается от того, что находится внутри крюка.
Гитолит делает кучу вещей в env, но тот, который нас задирал, был настройкойGIT_DIR
.
После того, как мы это выяснили, решение было таким же простым, как:
ENV.delete 'GIT_DIR'
в нашем ruby script, который запускается с помощью крюка <<27 > .
То же самое дело в Git Совет. Автоматическое обновление рабочего дерева с помощью post-receive hook, но с элегантным выходом из этого:
Решение?
Оказывается, крюкpost-receive
запускается с переменной окруженияGIT_DIR
, установленной в папкуrepo/.git
, поэтому независимо от того, какой путь вам "cd" в нее будет всегда запускать любые последующие команды Git есть.
Фиксирование это просто вопрос отмены настройкиGIT_DIR
(спасибо Ульриху Петри за элегантноеenv -i
решение):
#!/bin/sh
cd ..
env -i git reset --hard