Получение "фатального: не репозиторий git:". "при использовании post-update hook для выполнения 'git pull' на другом репо

Я новичок в git, поэтому я извиняюсь (и, пожалуйста, поправьте меня), если я неправильно использую терминологию здесь, но я сделаю все возможное.

Я пытаюсь настроить пустой репозиторий git (hub) и рабочую копию сайта разработки (prime) на веб-сервере. Я попытался создать его после в этой статье. Я хочу, чтобы рабочая копия разработки обновлялась всякий раз, когда репозитория центра была нажата. У меня создалось впечатление, что правильный крючок для этого - post-update, который я создал так:

#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET

Update

Когда я нажимаю изменения с моего локального репо на голый концентратор, я получаю следующий вывод из пост-обновления script:

remote: sites
remote: fatal: Not a git repository: '.'

Однако, если я SSH на сервере как пользовательские "сайты" и выполняю этот script вручную, он отлично работает. Любые идеи относительно того, что может быть неправильным с этим крюком или script?

Ответ 1

Вот script, который в конечном итоге сработал. Я думаю, что бит, который я изначально отсутствовал, который не позволял ему работать удаленно, был unset GIT_DIR

#!/bin/sh
cd /path/to/working-copy/ || exit
unset GIT_DIR
git pull repo branch

exec git-update-server-info

Ответ 2

Попробуйте вместо этого:

#!/bin/sh
cd /path/to/working-copy/
env -i git pull

Ответ 3

Несмотря на это unset GIT_DIR просто работает.

проблема возникает, если вы неправильно установили GIT_DIR в другом месте.

вы можете просто добавить это: GIT_DIR =.git/ Он будет работать

Ответ 4

В моем случае я указал рабочее дерево, и это разрывает некоторые команды, например pull (или более точно fetch).

Чтобы отменить рабочее дерево, если оно находится в вашем конфигураторе git, выполните следующие действия:

git config --unset core.worktree

(Есть другие способы установить дерево работы)

Важно отметить,

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

Banter:

Это означает, что внутренние элементы git в некоторых случаях используют пути относительно рабочей строки + .git/. По моему опыту, рабочие деревья не очень хорошо поддерживаются, за исключением самых фундаментальных частей git. Я не экспериментировал полностью, git, вероятно, будет вести себя, если я установил правильную конфигурацию config git, которой я не играл.

Ответ 5

Вероятно, у вас есть проблема с правами доступа. Я не уверен, как вы настроили свой оголенный репозиторий git, но если он работает под пользователем git, убедитесь, что пользователю git разрешено выполнять git pull в каталоге проекта.

По желанию попробуйте выяснить, какой пользователь вы используете при запуске hook:

echo `whoami`