Вопрос по git, ssh, git-clone, windows, msysgit – Как остановить git через ssh на windows от разрешения неправильного пути?

5

У меня есть окно Windows 2003 с настройкой сервера SSH. Я установил msysgit (git version 1.6.2) как локально, так и на сервере.

Сервер имеет следующий абсолютный путь к моим репозиториям:

e:\vc\git\myrepo.git

когда пользователь входит в систему, он / она будет помещен в следующий рабочий каталог:

e:\vc\git\

При запуске следующего cmd на моем компьютере разработчика:

git clone ssh://[email protected]/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 к пути. Видимо, это ошибка, и она будет исправлена в будущем, это была моя работа.

Какой SSH-сервер вы используете на сервере? Часть URL после user @ server должна быть в том формате, который он понимает. Tim Henigan

Ваш Ответ

3   ответа
4

Проблема в том, что cmd.exe не понимает параметры в одинарных кавычках. Так что вместо этого мы используем sh.

Создайте файл gup.sh со строкой

    git-upload-pack.exe $*  

и grp.sh с

    git-receive-pack.exe $*  

on server!

Затем запустите:

    git clone -u 'sh gup.sh' ssh://[email protected]/e/vc/git/myrepo.git testrepo  
    git config remote.origin.uploadpack 'sh gup.sh'  
    git config remote.origin.receivepack 'sh grp.sh'  
4

Вы пробовали следующее?

git clone ssh://[email protected]/myrepo testrepo

Обратите внимание на удаление ".git" с конца пути SSH. Этот суффикс нужен только в конце, если он есть в имени удаленного каталога.

Кроме того, вы пробовали любой другой формат URL SSH? Чтобы использовать относительный путь, вы можете попробовать:

git clone ssh://[email protected]/~/myrepo testrepo

Увидетьстраница руководства git clone для деталей о других форматах URL.

1) в каталоге есть .git. Извините за опечатку, исправленную в вопросе. 2) приводит к ошибке: фатально: «~ / myrepo.git»; не похоже на git-репозиторий Dane O'Connor
Я также пытался: ssh: // myuser @ myip: myrepo.git, но ssh жалуется на порт и не может подключиться. Dane O'Connor
6

переключив мой ssh-сервер с winssh на openssh (через слой cygwin). Я смог подключиться нормально (как отмечено выше) с помощью winsshd, но winsshd неправильно обрабатывал пути с префиксом «/». Я мог бы заставить winsshd работать, но переключиться на cygwin и openssh было быстрее.

Вот этохороший пост в блоге чтобы начать установку, если вы находитесь в аналогичной ситуации:

+1 за отличный пост в блоге о настройке сервера git + ssh на windows.

Похожие вопросы