题
以下一组命令正常工作
$ mkdir carboncake
$ cd carboncake
$ git init
$ git remote add origin gitosis@myserver.net:repositories/carboncake.git
$ git pull
但是,当我尝试以其他用户的方式拉动时
$ mkdir carboncake
$ cd carboncake
$ git init
$ git remote add origin mithun@myserver.net:repositories/carboncake.git
$ git pull
我有以下错误
fatal: 'repositories/carboncake.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
我的 gitosis.conf
包含
[gitosis]
[group team]
writable = sweepshots
members = git_id_rsa
[group gitosis-admin]
writable = gitosis-admin
members = git_id_rsa
[repo carboncake]
description = A brand new app by Mithun.
owner = Mithun P
[group carboncake]
writable = carboncake
members = mithun @core
和 keydir
包含git_id_rsa.pub KEY-----.pub mithun.pub mithun-rsa-key-20110427.pub
和用户的 .ssh
DIR包含
mithun@testserver:~$ ls .ssh/
id_rsa id_rsa.pub mithun_rsa mithun_rsa.pub
- 更新
我试过了 $ git remote add origin mithun@myserver.net:carboncake.git
也是同样的错误。
实际上Carboncake.git位于 /srv/gitosis/repositories/carboncake.git
解决方案
mithun@myserver.net
?
通过使用 mithun@myserver.net
, ,您正在彻底绕过毛虫,因为正确的URL将涉及'git
'已安装吉托石的用户。
每个螺旋病命令都将涉及相同的“ git”用户: gitosis@myserver.net
(在这里假设一个“ gpitomis”帐户)。
另外,您不必指定回购的完整路径:
git remote add origin gitosis@myserver.net:carboncake.git
其他提示
为 @vonc(完全正确)的答案添加一些简单的英语清晰度...
gitosis(不再是积极开发,您应该使用Gitolite,但此答案适用于两个),将每个用户的公共钥匙存储在(就您而言)中 ~gitosis/.ssh/authorized_keys
. 。当用户ssh'es到帐户时 gitosis
, ,SSH进行加密握手,在该授权_Keys文件中找到一条与提供的密钥相匹配的行,并执行该行所说的一切。如果您查看该授权_keys文件,每行将在该用户登录时提供一个命令,该命令是对Gitosis过程的调用,并带有相关用户的名称。
因此,每个用户真的很适合 gitosis
“机器”帐户,但是他们在那里的钥匙是用用户射击的。这就是Gitosis知道与哪个用户交谈的方式,即使他们登录了一个名为的“机器”帐户 gitosis
.
因此,您需要为gitosis跟踪的每个本地存储库都需要给予格式的遥控器 gitosis@your.server:<reponame>.git
.