получение " fatal: not a git repository:'.'"при использовании крючка после обновления для выполнения "git pull" на другом РЕПО
Я новичок в git, поэтому я прошу прощения (и, пожалуйста, поправьте меня), если я злоупотребляю терминологией здесь, но я сделаю все возможное.
Я пытаюсь настроить голый git repo (hub) и рабочую копию сайта разработки (prime) на веб-сервере. Я пытался сделать это после в этой статье. Я хочу, чтобы рабочая копия разработки обновлялась при каждом нажатии на репо-концентратор. Я под впечатлением, что правильный крюк для этого post-update
, которого я создал, как Итак:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
обновление
когда я нажимаю изменения из моего локального РЕПО в голый концентратор, я получаю следующий вывод из сценария после обновления:
remote: sites
remote: fatal: Not a git repository: '.'
однако, если я SSH на сервер в качестве пользовательских "сайтов" и выполняю этот скрипт вручную, он отлично работает любые идеи о том, что может быть не так с этим крючком или скриптом?
5 ответов:
вот сценарий, который в конечном итоге работал. Я думаю, что бит, который я изначально отсутствовал, что помешало ему работать удаленно, был
unset GIT_DIR
#!/bin/sh cd /path/to/working-copy/ || exit unset GIT_DIR git pull repo branch exec git-update-server-info
несмотря на то, что отключено использование переменной git_dir просто работать.
проблема возникает, когда вы устанавливаете git_dir неправильно где-то еще.
вы можете просто добавить, что вместо этого: Использование переменной git_dir=.мерзавец/ Это будет работать
в моем случае я указал рабочее дерево, и это разбивается на некоторые команды, такие как
pull
(точнееfetch
).чтобы отключить рабочее дерево, если оно находится в вашей конфигурации git, через:
git config --unset core.worktree
(есть и другие способы установить рабочий дерево)
важно отметить,
нет никаких изменений в том, что это ваша проблема, если вы сами не вырыли эту яму вокруг вас, используя пользовательское рабочее дерево в первом место.
Стеб:
Это означает, что Git internals использует пути относительно рабочего дерева +
.git/
в некоторых случаях. По моему опыту, рабочие деревья не очень хорошо поддерживаются, за исключением самых фундаментальных частей git. Я не экспериментировал тщательно, Git, вероятно, будет вести себя, если я правильно установлю любую переменную конфигурации каталога git, с которой я не играл.
у вас, вероятно, есть проблема с разрешениями. Я не уверен, как вы настроили свой голый git repo, но если он работает под
git
пользователь, убедитесь, чтоgit
пользователь может выполнитьgit pull
в папке проекта.дополнительно попробуйте это, чтобы узнать, какой пользователь вы, когда крючок запускается:
echo `whoami`