Не удается извлечь перехват Git после обновления

#windows #git #ssh #msysgit #copssh

#Windows #git #ssh #msysgit #copssh

Вопрос:

В настоящее время я настраиваю схему 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.git — это простой репозиторий, который содержит вышеупомянутый перехват и передается в. Мне не удалось запустить компакт-диск в репозиторий без /cygdrive /, который был обнаружен путем повторной отправки $ pwd в диагностическом запросе.

В оперативном репозитории успешно вызван Pull, проблема заключается в поиске репозитория 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.

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

Спасибо за любые подсказки или помощь!


Обновление: Моя схема требует, чтобы я извлекал из репозитория hub, объяснение почему заняло бы ненужное количество места, но это так.

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

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

Ответ №1:

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

Комментарии:

1. У меня не установлен cygwin, но CopSSH включает cygwin — смотрите Обновленный вопрос для получения более подробной информации. Существует ли ssh-сервер Windows, который не использует cygwin? Это может быть решением.

2. @James: Я бы рекомендовал попробовать команду вашего перехвата в DOS сеансе, чтобы проверить, является ли проблема по умолчанию PATH (with copSSH ). Затем, если вы получаете ту же ошибку (что означает, что вам нужно использовать /cygdrive ), попробуйте в этом DOS сеансе переопределить PATH , чтобы включить только msysgit и основные пути Windows. Если команда выполняется затем в этом сеансе, установите то же самое PATH в вашем перехвате.

3. Я сделал именно то, что указано выше, и теперь все пути разрешаются правильно. Спасибо!

Ответ №2:

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

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

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