Я новичок в git, поэтому прошу прощения (и, пожалуйста, поправьте меня), если я неправильно использую терминологию здесь, но я сделаю все возможное.
Я пытаюсь настроить репозиторий git (концентратор) и рабочую копию сайта разработки (премьер) на веб-сервере. Я попытался скопировать его по образцу этой статьи . Я хочу, чтобы рабочая копия для разработки обновлялась всякий раз, когда отправляется репозиторий хаба. У меня сложилось впечатление, что для этого нужен подходящий хук post-update
, который я создал вот так:
#!/bin/sh
whoami
cd /path/to/working-copy/
RET=`git pull`
echo $RET
Обновить
Когда я отправляю изменения из локального репозитория в пустой концентратор, я получаю следующий результат сценария после обновления:
remote: sites
remote: fatal: Not a git repository: '.'
Однако, если я использую SSH на сервере как пользовательские «сайты» и выполняю этот сценарий вручную, он отлично работает. Любые идеи относительно того, что может пойти не так с этим крючком или скриптом?
GIT_DIR
решает проблему.GIT_DIR
вместоPWD
.cd
-ing меняетPWD
не тоGIT_DIR
. В git должен быть запасной вариант отGIT_DIR
до,PWD
если первый недоступен.git pull
?Вместо этого попробуйте:
источник
Несмотря на это, GIT_DIR просто работает.
проблема возникает, когда вы неправильно устанавливаете GIT_DIR в другом месте.
вы можете просто добавить это вместо: GIT_DIR = .git / Он будет работать
источник
В моем случае я указал рабочее дерево, и это нарушает некоторые команды, например
pull
(или, точнее,fetch
).Чтобы отключить рабочее дерево, если оно есть в вашей конфигурации git, выполните:
(Есть и другие способы установить дерево работы)
Важно отметить,
Практически ничего не изменится в том, что это ваша проблема, если вы сами не вырыли эту яму вокруг себя, в первую очередь, используя собственное рабочее дерево.
Подшучивание:
Это означает, что
.git/
в некоторых случаях внутренние компоненты git используют пути относительно рабочего дерева + . По моему опыту, рабочие деревья не очень хорошо поддерживаются, за исключением самых фундаментальных частей git. Я не экспериментировал тщательно, Git, вероятно, будет вести себя, если я правильно настрою переменную конфигурации каталога git, с которой я не играл.источник
Вероятно, у вас проблема с разрешениями. Я не уверен, как вы настроили свое голое репозиторий git, но если он работает от имени
git
пользователя, убедитесь, чтоgit
ему разрешено выполнятьgit pull
в каталоге вашего проекта.При желании попробуйте это, чтобы узнать, каким пользователем вы являетесь при запуске ловушки:
источник
echo `whoami`
делать , чтоwhoami
не делает?