«X» не является репозиторием git (я уверен, что путь правильный) - PullRequest
4 голосов
/ 20 апреля 2011

Я хочу иметь возможность работать из дома, клонируя репозиторий git, который существует на моем рабочем столе, на мой ноутбук.Обе системы запускают msysgit в оболочке cygwin.Обе системы используют Cygwin's SSH.

Если я ssh на этот сервер, я могу увидеть репозиторий по пути / cygdrive / d / Projects / TheProject

$ ssh TheDesktop
MyUser@TheDesktop's password: ...I enter the password, see the MOTD, and I'm in...
$ cd /cygdrive/d/Projects/TheProject
...See the git repository here.  Even see the current branch in the prompt...

Но я пытаюсь клонировать, и это не удается:

$ git clone ssh://TheDesktop/cygdrive/d/Projects/TheProject
Cloning into TheProject
MyUser@TheDesktop's password: ...I enter the password...
fatal: '/cygdrive/d/Projects/TheProject' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

Я также попытался создать символическую ссылку на репозиторий в моей домашней папке:

$ ssh TheDesktop
MyUser@TheDesktop's password: ...I enter the password...
$ ln -s /cygdrive/d/Projects/TheProject .
$ exit

$ git clone ssh://TheDesktop/~/TheProject
Cloning into TheProject
MyUser@TheDesktop's password: ...I enter the password...
fatal: '/cygdrive/d/Projects/TheProject' does not appear to be a git repository
fatal: The remote end hung up unexpectedly   

Я, конечно, вижу эту ошибку во многих вопросах, и они почти всегда относятся к неверному пути.Но я действительно уверен, что мой путь верен.У меня такое ощущение, что это как-то связано со средой, в которую входит ssh'd на рабочем столе, но я действительно не могу понять, что именно.Какие другие вещи могут вызвать эту ошибку?

Ответы [ 3 ]

4 голосов
/ 20 апреля 2011
git clone TheDesktop:cygdrive/d/Projects/TheProject TheProject

должно исправить это

Если ssh-сервер не находится под Cygwin, замените путь Windows:

cygpath --mixed /cygdrive/d/Projects/TheProject

Мой опыт показывает, что Cygwin передает неправильностиль пути к msysgit.Msysgit не понимает / cygdrive и поэтому портит его, за исключением с единственным аргументом в командной строке, и в этом случае Cygwin Bash, по-видимому, волшебным образом выполняет преобразование.

Однако, для gitshell по сравнению с cygwin sshd такого не произойдет.Я предполагаю, что вы пробовали что-то близкое к

git clone TheDesktop:D:/Projects/TheProject TheProject

Если бы это не сработало, я бы посмотрел на

git daemon # wasn't supported on Windows last time I checked

или

git bundle create repo.bundle --all

# receive it on the remote
scp TheDesktop:repo.bundle
git clone repo.bundle TheProject
1 голос
/ 20 апреля 2011

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

$ git clone ssh://TheDesktop/cygdrive/d/Projects/TheProject/.git TheProject

должно работать

0 голосов
/ 20 апреля 2011

Возможно, это связано с тем, что git хочет найти «cygdrive / d / Projects / TheProject» относительно вашей папки входа.

В первом примере вы входите через ssh, а затем делаете «cd / cygdrive»./ ... ", который является абсолютным путем, а не относительным.

Изменение вашей папки входа в систему ssh для указания, например, папки Projects, может вам помочь.А также сократите ваш путь SSH:)

...