我使用本教程在服务器上安装了gitolite .这属于"非根"方法.
当我尝试将gitolite-admin克隆回我的客户端时,它失败了.我收到此错误消息:
git clone gitolite@server.com:gitolite-admin
Cloning into gitolite-admin...
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
也:
git clone ssh://gitolite@server.com:gitolite-admin
Cloning into gitolite0admin...
Using username "git-upload-pack 'gitolite".
fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)
我也尝试追加.git到repo名称的末尾,并且我也尝试添加repositories/gitolite-admin(由上面链接的教程中的错误建议)以及这两者的组合并且都没有工作.我在谷歌上找不到关于"使用用户名"位的结果,这引起了我的兴趣.
我可以通过SSH连接到本机,它告诉我,我有机会与R和W gitolite-admin.那么,SSH正在运作?
检查关于gitolite的ssh 部分:你可以server.com通过以下ssh方式连接:
server.com@~/.ssh/authorized_keyscommand="选项,这意味着"无论传入用户要求做什么,都强行运行此命令").关于第三方教程我完全不喜欢的是它尝试对git用户和ssh非root用户使用相同的名称
你应该分开:
gitolite-adminrepo的管理员权限)git',而不是gitolite,正是为了 避免两种使用模式之间的混淆:
git(直接server.com登录,这里没有ssh):执行git命令所需的交互式会话(比如在服务器上克隆gitolite repo,并执行gitolite/src/gl-system-install)ssh git@server.com这将使用你的~/.ssh/id_rsa(.pub)公钥和私钥,作为gitolite 的公钥和私钥,将授权你克隆gitolite-admin回购并推回回购再说一次:
'gitolite'不是一个真正的帐户,只有一个被授权执行命令的名称server.com为' git'(实际的"托管帐户",如"托管git服务和repos").
其他所有的git的用户也将在执行Git命令server.com的git.
并且该特定用户(gitolite)将通过强制命令机制链接到gitolite授权层,并在gitolite安装期间设置权限,以授予该"用户"克隆,修改和回推gitolite-admin回购的权限.
(与你将添加的所有其他ssh git用户相比,这是唯一的特殊性:他们将无法访问特定的git repo,这是gitolite-admin一个)
试图用同名来命名这两个只是在寻找麻烦.
我不喜欢使用公钥/私钥的默认命名约定,所以我更喜欢客户端使用目标用户的名称定义这些键:
~/.ssh/gitolite.pub
~/.ssh/gitolite
Run Code Online (Sandbox Code Playgroud)
然后我定义一个配置文件:~/.ssh/config在其中:
host gitolite
user git
hostname server.com
identityfile ~/.ssh/gitolite
Run Code Online (Sandbox Code Playgroud)
(注意用户:总是git)
然后我可以克隆我的gitolite-amin回购:
git clone gitolite:gitolite-admin
# modify locally
# git add -A ; git commit -m "my modifs"
git push origin master
Run Code Online (Sandbox Code Playgroud)