2

以下命令集正常工作

$ 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目录包含

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

4

2 回答 2

3

为@VonC(完全正确)的答案添加一点简单的英语清晰度......

gitosis (不再处于积极开发中,你应该使用 gitolite,但这个答案适用于他们两个)将每个用户的公钥存储在(在你的情况下)~gitosis/.ssh/authorized_keys。当用户 ssh'es 到 accountgitosis时,ssh 进行加密握手,在该 authorized_keys 文件中找到与提供的密钥匹配的行,并执行该行所说的任何操作。如果您查看该 authorized_keys 文件,每行都提供了一个命令以在该用户登录时调用,这是对 gitosis 进程的调用,带有相关用户的名称。

因此,每个用户都真正地 ssh'ing 到同一个gitosis“机器”帐户,但是他们在那里 SSH 的密钥会以他们的用户身份启动 gitosis。这就是 gitosis 知道它正在与哪个用户交谈的方式,即使他们已经登录到同一个名为gitosis.

因此,您要跟踪到 gitosis 的每个本地存储库都需要提供一个远程格式gitosis@your.server:<reponame>.git

于 2011-04-27T12:22:06.410 回答
2

mithun@myserver.net?

通过使用mithun@myserver.net,您完全绕过了 gitosis,因为正确的 url 将涉及git已安装 gitolite 的 ' ' 用户。
每个 gitosis 命令都将涉及相同的 'git' 用户:(gitosis@myserver.net假设这里有一个 'gitosis' 帐户)。

另外,您不必指定 repo 的完整路径:

 git remote add origin gitosis@myserver.net:carboncake.git
于 2011-04-27T11:42:05.327 回答