如何通过解决错误的path在窗户上通过SSH阻止GIT?

我有一个ssh服务器安装程序的Windows 2003框。 我有msysgitgit版本1.6.2)安装在本地和服务器上。

服务器有以下我的回购的绝对path:

e:\vc\git\myrepo.git 

当用户login时,他/她将被放在以下工作目录中:

 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前缀的path与“/”有关。 我该如何告诉git不要这样做? 这应该工作吗?

注意:git-upload-pack正在工作,因为我将\ gitinstallpath \ libexec \ git-core添加到path中。 显然这是一个错误,将来会修复,这是我的工作。

我解决了这个问题,把我的ssh服务器从winssh切换到openssh(通过cygwin层)。 我能够使用winsshd连接正常(如上所述),但winsshd没有正确处理前缀为“/”的路径。 我可能可以winsshd工作,但切换到cygwin和openssh更快。

这里有一个很好的博客文章来启动设置,如果你在类似的情况:

你有没有尝试过以下?

 git clone ssh://myuser@myip/myrepo testrepo 

请注意从SSH路径末尾删除“.git”。 如果远程目录名具有该名称,则只需在该末尾添加该后缀即可。

另外,你有没有尝试过任何其他的SSH网址格式? 要使用相对路径,可以尝试:

 git clone ssh://myuser@myip/~/myrepo testrepo 

有关其他URL格式的详细信息,请参阅git克隆手册页 。

如果有人仍对解决方法感兴趣:

问题是 – 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'