При отправке в наш общий пустой репозиторий (поверх ssh), post-commit не работает должным образом.
Это довольно часто встречается, как я обнаружил во многих потоках, и отлично работает для двух других репозиториев в том жесервер, который сводит меня с ума.
#!/bin/sh
GIT_WORK_TREE=/ab/cd/staging git checkout -f
Сам репозиторий находится в том же каталоге, что и каталог, который хук должен установить на
/ab/cd/barerepo
При нажатии он не проверяетфайлы по указанному пути, но выдает это сообщение об ошибке:
Writing objects: 100% (3/3), 299 bytes, done.
Total 3 (delta 2), reused 0 (delta 0)
fatal: Could not jump back into original cwd
error: hooks/post-receive exited with error code 128
Я не смог найти никакой информации о том, что это значит.(Насколько я могу судить, Google вызывает только коммиты из вклада в сам git).Поэтому я прочитал, угадал и попробовал…
- дополнительно установив GIT_DIR в ловушку после получения
- , повторно инициализируя голое репо с помощью --git-dir = / ab / cd / barerepo --working-dir = / ab / cd / staging
- установка рабочего каталога вручную в barerepo / config
- настройка пустой репо и фиксация
- настройка пустойрепо путем клонирования
Прямо сейчас конфиг выглядит так
[core]
repositoryformatversion = 0
filemode = true
bare = true
но у меня тоже было (без усилий)
[core]
repositoryformatversion = 0
filemode = true
bare = true
sharedrepository = 1
worktree = /ab/cd/staging
logallrefupdates = true
[receive]
denyNonFastforwards = true
Я также добавилвторая строка для ловушки после получения
echo "post-receive done" > updated.txt
Записывает файл в каталог пустого хранилища.Это имеет смысл для меня, так как GIT_DIR, кажется, установлен на «.», Что подтверждается перехваченным пост-получением, полученным мной от другого SO вопроса
echo Running $BASH_SOURCE
set | egrep GIT
echo PWD is $PWD
Результат:
Running hooks/post-receive
GIT_DIR=.
PWD is /ab/cd/barerepo
Так как я могу заставить git вернуться к исходному cwd (текущему рабочему каталогу?)?К вашему сведению: я все еще довольно новичок в мерзавцах, и у меня возникает глупое ощущение, что я упускаю что-то очевидное, но не могу найти ничего существенного в этом конкретном сообщении об ошибке, и это заставляет меня задуматься.Сам толчок работает нормально, кстати.