#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
(withcopSSH
). Затем, если вы получаете ту же ошибку (что означает, что вам нужно использовать/cygdrive
), попробуйте в этомDOS
сеансе переопределитьPATH
, чтобы включить толькоmsysgit
и основные пути Windows. Если команда выполняется затем в этом сеансе, установите то же самоеPATH
в вашем перехвате.3. Я сделал именно то, что указано выше, и теперь все пути разрешаются правильно. Спасибо!
Ответ №2:
Вам не следует пытаться запускаться git pull
из перехвата репозитория. Хотя некоторые люди скажут, что это работает нормально, это не так, и поведение может быть непредсказуемым из-за различных факторов.
Вместо этого вы должны использовать метод, подобный этому. http://toroid.org/ams/git-website-howto
Этот метод использует перехват после получения в простом репозитории, который вызывается git checkout
для обновления каталога.