Git post-update hook не может тянуть - PullRequest
3 голосов
/ 22 апреля 2011

Я сейчас настраиваю git-схему, как описано здесь .

Рассматриваемый сервер работает под управлением Windows Server 2008 R2, используя copSSH и msysGit.

Это всего лишь пара репозиториев git: одно голое репо, которое помещается в репозиторий, а затем другое непогашенное репо, содержащее работающее приложение.

Репо, которое помещается в репозиторий, содержит хук после обновления, который выглядитследующим образом:

echo
echo "**** Pushing data to Live Server."
echo

cd /cygdrive/c/Repositories/Live || exit
unset GIT_DIR
git pull hub master

exec git-update-server-info

Примечание: Live - это не голое репо, которое, как следует из названия, является live.Live.git - это голое репо, которое содержит вышеуказанный хук и подталкивается к.Мне не удалось записать на репозиторий без / cygdrive /, который был обнаружен при выводе $ pwd во время диагностического push-запроса.

Pull успешно вызывается в репозитории Live, проблема заключается в поиске репозитория Live.git.в этом обновлении.Я получаю «странные сообщения» об ошибках, которые читаются так:

remote: Pushing data to Live Server.ommand not foundnd not foundle or directory
remote: : not foundpdate-server-infoand not foundand not founddommand not found

Концентратор определен как удаленный репозиторий через локальную оболочку git как /c/Repositories/Live.git и / cygdrive / c / Repositories /Live.git.

Я заменил «хаб» прямыми путями к папкам, даже пробуя что-то вроде «../Live.git» Все, что я пробовал, закончилось неудачей обновления git.Все попытки для Live.git в команде обновления были предприняты с помощью git bash с рабочим каталогом, установленным на Live repo, и работали.

Спасибо за любые предложения или помощь!


Обновление: моя схема требует, чтобы я извлек из хранилища концентратора, чтобы объяснить почему, потребовалось бы неоправданно много места, но это так.

Я провел больше испытаний и обнаружил большео моей проблеме: когда я проталкиваю через SSH в свой репозиторий, основной концентратор успешно монтируется и выполняется команда pull.Когда указанная команда pull пытается разрешить хаб-репозиторий, она завершается неудачно (как я подробно описал выше), но оказывается, что с помощью серии команд ls в хуке папки не видны.Я даже запустил ls на / cygdrive / c / и вижу только папку с именем usr.Я гарантировал, что у пользователя copSSH есть полные права администратора во всей файловой системе (только для целей тестирования и отладки).

Я не знаю, почему мои пути используют путь / cygdrive / path, я неу меня установлен cygwin помимо cygwin, упакованного в copSSH.Это свидетельствует о проблеме в моей конфигурации?или это нормально для установок copSSH + msysGit?Как это возможно, что я могу смонтировать основной репозиторий из ловушки, даже если ls не перечислит папку репозиториев?

Ответы [ 2 ]

1 голос
/ 22 апреля 2011

Вы не должны пытаться запустить git pull из ловушки репо.Хотя некоторые люди скажут, что он работает нормально, это не так, и поведение может быть непредсказуемым из-за различных факторов.

Вместо этого вам следует использовать такой метод, как этот.http://toroid.org/ams/git-website-howto

Этот метод использует хук post-receive в голом репо, который вызывает git checkout для обновления каталога.

1 голос
/ 22 апреля 2011

Вам не нужно указывать /cygdrive в путях с msysgit, если только у вас не установлен Cygwin (в этом случае комбинация msysgit mingw и cygwin может быть источником вашей проблемы)

...