我正在尝试在我的linux服务器上设置一些git存储库,以便与一些从事Java项目的朋友分享。我嗅了一下,发现gitolite应该是一个很好的管理层,所以看完他们的文档后我决定按照这个教程:
http://sites.google.com/site/senawario/home/gitolite-tutorial
一切顺利,直到第6步。在那里,用于存储库路径的语法不起作用,因为服务器上的sshd没有监听默认端口,并且该语法不喜欢非默认端口,所以之后更多的研究我很快发现git支持ssh://等。唯一的问题是它需要将完整的存储库路径包含在URL中。
当我到达第7步并且管理库无法推送时,我发现gitolite不喜欢完整的路径。故障排除部分建议我创建一个类似的主机别名:
http://sitaramc.github.com/gitolite/sshhostaliases.html
这应该允许我使用hostalias:reponame作为路径。尽管要求每个用户都这样做很麻烦,但我们采用了这种方法,只是发现它根本不起作用。我们的用户正在运行windows和msysgit。
总结:
是否有解决方案或我们是否必须放弃噱头并找到别的东西?
答案 0 :(得分:0)
查看编辑~/.ssh/config
(来自msysgit)是否适用于每个用户。在~/.ssh/config
文件中添加以下内容:
Host gitserver
Port 9999
文件~/.ssh/config
是可选的,如果存在,则由ssh使用。此外,~/.ssh
目录不得向其他人(chmod 700 ~/.ssh
)读取。
当使用gitolite访问git repo serverd时,你实际上正在使用ssh传输。为了确保ssh(和间接git)使用文件~/.ssh/config
,您可以尝试以下诊断:
$ ssh -v gitserver
以debug1:
前缀开头的前几行将告诉您ssh是否正在使用~/.ssh/config
文件 - 它将显示它使用的配置文件的完整路径。