Как остановить 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.

Другие вопросы по тегам