Gitolite 克隆未按预期工作

Gitolite 克隆未按预期工作

我正在运行 Debian 系统,最近使用 DEB 包安装了 gitolite。

这是我的问题:

我试图克隆 gitolite-admin.git 存储库(用于为您希望 gitolite 为您管理的所有存储库配置 gitolite 安装)。

我的第一次尝试完全按照说明进行:

git clone gitolite@server:gitolite-admin

我收到以下错误:

fatal: 'gitolite-admin' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

注意:如果我用 gitolite-admin.git 替换 gitolite-admin,也会发生同样的事情,
但是,当我执行以下操作时:

git clone gitolite@server:~/repositories/gitolite-admin.git

此行成功将存储库克隆到我的本地工作站。
现在,我可以毫无问题地将额外的文本添加到文件路径,但是文档告诉我这是不正确的。

以下链接(http://sitaramc.github.com/gitolite/doc/3-faq-tips-etc.html) 指出“在 git clone 中的 repo 名称开头添加 repositories/”是一个常见错误。它还指出“实际上 gitolite 会在内部添加 $REPO_BASE,因此您不应该做同样的事情!”

我的 .gitolite.rc 文件包含 $REPO_BASE 的以下行:

[Located in /home/gitolite/.gitolite.rc]
$REPO_BASE="repositories";

我的问题是,我的配置有什么问题,导致 $REPO_BASE 不能添加到我的 git clone 前面?

如果您需要任何进一步的信息,请留下评论说明您需要什么信息,我会很乐意为您效劳。

其他说明:

  • git 版本:1.7.2.3
  • gitolite 版本:1.5.4-2~bp(这是来自 lenny-backports,因为我使用的是 Debian Lenny,而 gitolite 不是 Lenny 的标准配置)
  • Debian 的安装会创建用户“gitolite”来管理 gitolite 存储库。

答案1

能够访问gitolite@server:~/repositories/gitolite-admin.git,但不能gitolite@server:gitolite-admin访问,表示您没有“通过”Gitolite,而只是使用基于 SSH 的普通访问 gitolite 用户。

如果ssh gitolite@server echo normal access结果为normal access,则您使用的密钥不限于通过 Gitolite。如果您通过 Gitolite,则会看到类似 的内容bad command: echo normal access

如果您拥有一个用于通过 SSH 进入 gitolite 用户本身的密钥,并且尝试使用该密钥以 Gitolite 用户身份进行身份验证,则可能会发生这种情况。gitolite 中将存在一个“正常访问”密钥,.ssh/authorized_keys没有任何特殊前缀。配置为通过 Gitolite 的密钥的行将以 开头command="/path/to/gl-auth-command gitolite-username",…

如果你需要对 gitolite 用户和 Gitolite 进行正常的基于 SSH 的访问,那么你应该为这些目的设置单独的密钥,以便你可以IdentityFile.ssh/config文件中指定要使用哪个密钥(IdentitiesOnly如果你发现远程控制使用了“错误”的密钥,只是因为你已经在ssh 代理)。

例如:

使用您的某个“默认”键(其中一个远程控制的默认值(例如~/.ssh/id_rsa)或您通常在您的ssh 代理)访问 Gitolite(即你在活动中拥有公钥keydir/your-gitolite-user-name.pub)。

生成~/.ssh/gitolite-user用于直接登录 gitolite 用户。用于ssh -i ~/.ssh/gitolite-user gitolite@server登录。或者,添加自定义条目到~/.ssh/config

Host gitolite-user
              User gitolite
          HostName server
      IdentityFile ~/.ssh/gitolite-user
    IdentitiesOnly yes

因此您只需ssh gitolite-user登录即可。

答案2

我遇到了同样的错误:

fatal: 'gitolite-admin' does not appear to be a git repository

该 repo 已经正常运行,但按照 gitolite 恐慌部分的建议,使用服务器上的克隆回滚后,repo 中的几个文件的所有者为 root,而不是 gitolite3。

gitolite-admin.git# ls -l
total 48
drwx------  2 gitolite3 gitolite3 4096 Mar 27  2012 branches
-rw-r--r--  1 gitolite3 gitolite3    6 Mar 27  2012 COMMIT_EDITMSG
-rw-------  1 gitolite3 gitolite3  119 Jul 12  2013 config
-rw-r--r--  1 gitolite3 gitolite3   73 Aug 25  2013 description
-rw-r--r--  1 gitolite3 gitolite3  128 Aug 23 20:44 gl-conf
-rw-------  1 root      root        23 Aug 26 13:45 HEAD
drwx------  2 gitolite3 gitolite3 4096 Aug 25  2013 hooks
-rw-------  1 root      root       605 Aug 26 13:45 index
drwx------  2 gitolite3 gitolite3 4096 Mar 27  2012 info
drwxr-xr-x  3 gitolite3 gitolite3 4096 Mar 27  2012 logs
drwx------ 83 gitolite3 gitolite3 4096 Aug 26 14:01 objects
drwx------  4 gitolite3 gitolite3 4096 Mar 27  2012 refs

解决方法是将所有权改回 gitolite3。

gitolite-admin.git# chown -R gitolite3:gitolite3 *

相关内容