Gitosis/Gitolite设置

Gitosis/Gitolite设置,git,gitolite,Git,Gitolite,我对gitosis和gitolite有一个问题,我花了很多时间研究,但都没有结果。在严格遵循这两种产品的安装说明后,常见症状是目标存储库未通过gitosis/gitolite正确定位: 这失败了: $> git clone gitolite@example.com:testing Cloning into testing... fatal: 'testing' does not appear to be a git repository fatal: The remote end hung

我对gitosis和gitolite有一个问题,我花了很多时间研究,但都没有结果。在严格遵循这两种产品的安装说明后,常见症状是目标存储库未通过gitosis/gitolite正确定位:

这失败了:

$> git clone gitolite@example.com:testing
Cloning into testing...
fatal: 'testing' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
虽然这样做有效:

$> git clone gitolite@example.com:~/repositories/testing
Cloning into testing...
warning: You appear to have cloned an empty repository.
因此,指定完整路径是可行的,但这表明我们并没有在gitosis/gitolite中运行

问题的另一个可能相关症状是,当我在安装后通过ssh连接到服务器时,我的连接会冻结,并显示以下消息:

$> ssh gitolite@example.com
PTY allocation request failed on channel 0
另外,当我执行“ssh”时gitolite@example.com“info”,我不断获取GNU信息,而不是gitolite的信息(如果我在服务器上以gitolite的身份运行“/usr/local/bin/gl auth command kreeble”,我就可以获取这些信息)。我已经确认,在用户gitolite的.ssh目录中,authorized_keys只有一个条目可以让我通过gitolite命令:

command="/usr/local/bin/gl-auth-command kreeble",no-port-forwarding,\
   no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa long_key_base64_here \ 
   user@machine.local
关于为什么我不会收到gitolite提示有什么想法吗?
如果您对这个问题有任何想法,我将不胜感激,谢谢

我刚刚遇到了这个问题。我发现奇怪的是,我刚刚在一台MacOSX机器上成功地安装了gitolite,而在另一台MacOSX机器上同样的安装失败了。我的特殊问题在尝试克隆gitolite admin时是相同的,但在尝试“ssh”时是相同的git@localhostinfo'它将返回gnu信息,而不是gitolite信息。在文档中,它说这个问题是由于服务器上使用了错误的密钥,从而绕过了gitolite

进一步调查我的问题,情况并非如此。Gitolite被称为fine,事实上使用-vvv作为ssh命令的一部分显示了这一点。我的问题是几个月前,为了让gitosis或gitolite工作(我不记得是哪个),我修改了/etc/sshd_config,并在底部添加了“ForceCommand/usr/local/bin/ssh_session

其内容是:

#!/bin/bash
export SSH_SESSION=1
if [ -z "$SSH_ORIGINAL_COMMAND" ] ; then
  export SSH_LOGIN=1
  exec login -fp "$USER"
else
  export SSH_LOGIN=
  [ -r /etc/profile ] && source /etc/profile
  [ -r ~/.profile ] && source ~/.profile
  eval exec "$SSH_ORIGINAL_COMMAND"
fi

这最终导致ssh绕过gitolite的一些路径,让它们直接进入shell。由于可能是我在更老的尝试中尝试过让gitosis或gitolite工作,可能是其他人以前也尝试过,现在由于它而得到了这个错误。

我只知道gitosis,它是gitolite的前身,问题一定是相同的。我也经历过同样的问题,直到我想出来

如果没有安装gitolite,通常git会在~git中安装存储库,但是~gitolite会在~gitolite/repositories/testing.git中安装repos

据我所知,.git后缀是必需的

gitolite@example.com:testing会将您带到~gitolite/repositories/testing,但我猜代码的编写方式是,它认为repo必须命名为testing.git。所以它认为这是一个错误

gitolite@example.com:~/repositories/testing绕过了这个URL重写规则,但我猜它会再次查找~gitosis/repositories/testing.git

这一次,错误处理似乎是一个不同的代码。我认为,当它没有找到testing.git时,它被编码为返回一个空的回购协议

如果只添加.git后缀,所有问题都会消失。至少这是我患牙周炎的经历


祝你好运。

此外,在所有这些之后,我不得不为服务器上的git用户将gitolite的路径(在我的例子中是/usr/local/bin)添加到.bashrc。请注意,中央repo“testihng.git”文件夹被克隆/拉取为与本地repo相同的“testing”文件夹。这听起来似乎可行。不幸的是,我已经迁移到github,不再设置gitolite,因此无法测试它。也许其他人会看到这一点并从中受益!