Проблема здесь в том, что в post-commit
хуках (а также pre-commit
, prepare-commit-msg
и commit-msgt
) переменная окружения GIT_INDEX_FILE
установлена в .git/index
.(Это не задокументировано в документации githooks , но я опубликовал в другом месте о настройках переменных среды и текущем каталоге в перехватчиках git .)
Влияние переменной среды GIT_INDEX_FILE
описано в разделе «ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ» справочной страницы git
как:
GIT_INDEX_FILE
Эта среда [переменная] позволяет указать альтернативный индексный файл.Если не указано, используется значение по умолчанию $GIT_DIR/index
.
... и по какой-то причине в этой ситуации GIT_INDEX_FILE
используется относительно GIT_WORK_TREE
.
Чтобы крючок работал так, как вы ожидаете, вам нужно просто сбросить GIT_INDEX_FILE
, чтобы ваш крючок выглядел так:
#!/bin/sh
unset GIT_INDEX_FILE
export GIT_WORK_TREE=/var/www/example/
export GIT_DIR=/home/mark/test/.git/
git checkout -f