Как остановить git через ssh на windows от разрешения неправильного пути?
У меня есть окно Windows 2003 с настройкой сервера SSH. У меня msysgit (git version 1.6.2) установлен как локально, так и на сервере.
Сервер имеет следующий абсолютный путь к моим репозиториям:
e:\vc\git\myrepo.git
когда пользователь входит в систему, он / она будет помещен в следующий рабочий каталог:
e:\vc\git\
При запуске следующего cmd на моем компьютере разработчика:
git clone ssh://myuser@myip/myrepo.git testrepo
Я получаю следующую ошибку:
fatal: ''/myrepo.git'' does not appear to be a git repository
Согласно моим журналам SSH кажется, что GIT выполняет этот cmd на сервере:
'cmd.exe /c git-upload-pack '/myrepo.git''
Выполнение этой команды локально (на сервере) не выполняется по той же причине. Я думаю, что проблема связана с тем, что git ставит путь перед '/'. Как мне сказать Git не делать этого? Должно ли это работать?
Примечание: git-upload-pack работает, потому что я добавил \ gitinstallpath \ libexec \ git-core к пути. Видимо, это ошибка, и она будет исправлена в будущем, это была моя работа.
3 ответа
Я решил эту проблему, переключив мой ssh-сервер с winssh на openssh (через слой cygwin). Я смог нормально подключиться (как отмечалось выше), используя winsshd, но winsshd неправильно обрабатывал пути с префиксом "/". Я мог бы заставить winsshd работать, но переключиться на cygwin и openssh было быстрее.
Вот хороший пост в блоге, чтобы начать установку, если вы находитесь в подобной ситуации:
Если кто-то все еще заинтересован в обходном пути:
Проблема в том, что cmd.exe не понимает параметры в одинарных кавычках. Так что вместо этого мы используем sh.
Создайте файл gup.sh со строкой
git-upload-pack.exe $*
и grp.sh с
git-receive-pack.exe $*
на сервере!
Затем запустите:
git clone -u 'sh gup.sh' ssh: //myuser@myip/e/vc/git/myrepo.git testrepo git config remote.origin.uploadpack 'sh gup.sh' git config remote.origin.receivepack 'sh grp.sh'
Вы пробовали следующее?
git clone ssh://myuser@myip/myrepo testrepo
Обратите внимание на удаление ".git" в конце пути SSH. Этот суффикс нужен только в конце, если он есть в имени удаленного каталога.
Кроме того, вы пробовали любой другой формат URL SSH? Чтобы использовать относительный путь, вы можете попробовать:
git clone ssh://myuser@myip/~/myrepo testrepo
См. Справочную страницу git clone для получения подробной информации о других форматах URL.