Получение "фатального: не репозиторий 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`