Как правильно использовать пост-получение крючка? - PullRequest
1 голос
/ 27 ноября 2010

Моя структура каталогов:

~ / parent.git / .git / Крючки / после приема

Крюк после получения выглядит следующим образом:

#!/bin/sh
git checkout -f

Когда я нажимаю на parent.git, скрипт не запускается. Я не могу понять проблему, так как все в Интернете говорят, что это должно работать.

Я chmod'е пост-получаю, так что я знаю, что это не проблема. Любая помощь очень ценится.

Ответы [ 2 ]

2 голосов
/ 29 августа 2011

Как упоминал Крис, у вас, похоже, та же проблема, что и . Сброс на git push

.

В частности, перехваты запускаются с CWD и GIT_DIR, установленными в каталог .git. Это приводит к тому, что команда checkout выполняется в .git dir, и обычная ошибка об этом переопределяется.

Если вы выполните команду ls на пульте дистанционного управления .git dir, вы должны найти там полную проверку.

Самый простой способ обойти это - указать GIT_WORK_TREE в начале команды извлечения:

GIT_WORK_TREE=/my/git/checkout git checkout -f

Сценарий, связанный Крисом (http://utsl.gen.nz/git/post-update), должен решить эту и некоторые другие потенциальные проблемы.

1 голос
/ 28 ноября 2010

Если бы у меня была догадка, я бы сказал, что толкающий пользователь не имеет разрешения на выполнение проверки в этом каталоге.Я бы посоветовал вам создать минимальный рабочий сценарий и собрать его оттуда.IE, вместо:

git checkout -f

Do:

echo "Got here" > /tmp/git_push_log

Затем попробуйте:

echo "Got here" > pwd_test

Чтобы проверить свои предположения о том, в каком каталоге он работает и чторазрешения требуются.

...