我有一个关于指甲和指石的问题,我花了很多时间研究,但都没有用。在严格按照两个产品的设置说明进行操作后,常见的症状是目标存储库未通过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“时,我一直得到的是GNU而不是gitolite@example.com的信息(如果我在服务器上运行'/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
有什么想法可以解释为什么我不会被提示提示这个手势吗?如果你对这个问题有任何想法,我将不胜感激,谢谢!
发布于 2011-06-22 13:34:35
我刚刚遇到了这个问题。我发现奇怪的是,我刚刚在我的一台mac os x机器上成功地安装了gitolite,而在我的另一台mac os x机器上同样的设置却失败了。我的特别问题是当尝试克隆git-admin时是相同的,但当尝试'ssh git@localhost info‘时,它将返回gnu信息而不是gitolite信息。在文档中,它说这个问题是由于在服务器上使用了错误的密钥,所以that被绕过了。
进一步研究我的问题,情况并非如此。使用-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工作,这可能是其他人以前也尝试过,现在由于它得到了这个错误。
发布于 2011-07-09 05:06:48
我只知道人造板,这是人造石的前身,问题肯定是一样的。我也经历过同样的问题,直到我把它想出来。
如果没有安装git,git通常会在~git中安装存储库,但~gitolite会在~/git/ repositories /testing.git中安装存储库。
据我所知,.git后缀是必需的。
gitolite@example.com:testing会把你带到~gitolite/repositories/testing,但我猜代码的编写方式使得它认为存储库必须被命名为testing.git。所以它认为这是一个错误。
gitolite@example.com:~/repositories/ that绕过了这个URL重写规则,但我猜它会再次查找~gitosis/repositories/testing.git。
这一次,错误处理似乎是一个不同的代码。我认为,当它找不到testing.git时,它会被编码为返回一个空的repo。
如果您只需添加.git后缀,所有问题都会消失。至少这是我得了口炎的经验。
祝好运。
https://stackoverflow.com/questions/4976397
复制相似问题