Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以在windows的非默认端口上使用gitolite存储库吗?_Git_Ssh_Cmd_Msysgit_Gitolite - Fatal编程技术网

我可以在windows的非默认端口上使用gitolite存储库吗?

我可以在windows的非默认端口上使用gitolite存储库吗?,git,ssh,cmd,msysgit,gitolite,Git,Ssh,Cmd,Msysgit,Gitolite,我正在尝试在我的linux服务器上设置一些git存储库,以便与一些从事Java项目的朋友共享。我四处嗅了嗅,发现gitolite应该是一个很好的管理层,所以在查看了他们的文档后,我决定遵循本教程: 在第六步之前,一切都很顺利。在这里,用于存储库路径的语法不起作用,因为服务器上的sshd没有监听默认端口,并且该语法不喜欢非默认端口,所以在进一步研究之后,我很快发现git支持ssh://etc. 唯一的问题是它要求URL中包含完整的存储库路径 当我到达第7步,管理员存储库推送失败时,我发现gito

我正在尝试在我的linux服务器上设置一些git存储库,以便与一些从事Java项目的朋友共享。我四处嗅了嗅,发现gitolite应该是一个很好的管理层,所以在查看了他们的文档后,我决定遵循本教程:

在第六步之前,一切都很顺利。在这里,用于存储库路径的语法不起作用,因为服务器上的sshd没有监听默认端口,并且该语法不喜欢非默认端口,所以在进一步研究之后,我很快发现git支持ssh://etc. 唯一的问题是它要求URL中包含完整的存储库路径

当我到达第7步,管理员存储库推送失败时,我发现gitolite不喜欢完整路径。疑难解答部分建议我创建如下主机别名:

这应该允许我使用hostalias:reponame作为路径。尽管要求每个用户都这样做很烦人,我们还是采用了这种方法,结果发现它根本不起作用。我们的用户正在运行windows和msysgit

总结如下:

  • 服务器的sshd侦听非默认端口;这是无法改变的
  • gitolite似乎需要相对路径。相对路径仅在默认端口或使用主机别名时可用
  • 我们的用户正在运行Windows7(不可更改)和msysgit(可更改,如果有更好的吗?)。我们的设置似乎不喜欢主机别名

这有解决办法吗?还是我们必须放弃gitolite,寻找其他解决办法

查看编辑
~/.ssh/config
(来自msysgit)是否适用于每个用户。在
~/.ssh/config
文件中添加如下内容:

Host gitserver
Port 9999
该文件是可选的,如果存在,ssh将使用该文件。另外,其他人不能读取
~/.ssh
目录(
chmod 700~/.ssh

当使用gitolite访问git repo serverd时,实际上使用的是ssh传输。为了确保ssh(以及间接的git)使用文件
~/.ssh/config
,您可以尝试以下诊断:

$ ssh -v gitserver

debug1:
前缀开头的前几行将告诉您ssh是否正在使用
~/.ssh/config
文件-它将向您显示它所使用的配置文件的完整路径。

如问题所述,msysgit恐怕忽略了该文件的内容。该文件首先不存在,只存在于目录中,因此我甚至不确定是否为msysgit使用了正确的文件。它没有显示任何配置文件路径。它确实显示它正在连接到配置文件中包含的正确服务器主机名,但是它忽略了端口并尝试22。很奇怪。