我刚刚安装了gitolite但是当我推送存储库gitolite-admin时出现错误:
git push
Counting objects: 9, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 605 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)
remote: Empty compile time value given to use lib at hooks/update line 6
remote: Use of uninitialized value in require at hooks/update line 7.
remote: Can't locate Gitolite/Hooks/Update.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.1 /usr/local/share/perl/5.10.1 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at hooks/update line 7.
remote: BEGIN failed--compilation aborted at hooks/update line 7.
remote: error: hook declined to update refs/heads/master
To ssh://admin@192.168.0.26/home/admin/repositories/gitolite-admin.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'ssh://admin@192.168.0.26/home/admin/repositories/gitolite-admin.git'
Run Code Online (Sandbox Code Playgroud)
我不知道我该做什么.
你能帮助我吗?
谢谢
rob*_*dez 12
开始之前:gitbox是安装了git和gitolite的远程机器.该git的用户是gitolite作为运行在gitbox用户.
您可以通过以下方法克服此错误:(1)生成新密钥对,(2)在gitbox上注册公钥,以及(3)确保在连接到gitbox时始终以git用户身份使用新私钥.
对于忍者来说,这可能已经足够了.其余的,这里有更多细节:
步骤1)生成新的密钥对
大多数IDE都能够创建新的公钥/私钥对.或者,如果可以访问Linux机器,您可以使用以下方法生成自己的:
ssh-keygen -t rsa -f john_git_rsa
Run Code Online (Sandbox Code Playgroud)
输出将是一组私有(john_git_rsa)和public(john_git_rsa.pub)键(也就是密钥对).您需要在下一步中将公钥复制到gitbox.
步骤2)在gitbox上注册新的公钥
您可以通过快速搜索Google了解如何使用git管理gitolite-admin.简而言之,步骤是:(1)克隆gitolite-admin存储库; (2)将新公钥添加到gitolite-admin/keydir /目录; (3)将更改推送回gitolite-admin存储库.推送触发gitbox将keydir /文件夹中的任何新密钥注册到gitbox的git用户的授权用户列表.
您的gitbox现在已准备好接受来自那些使用john_git_rsa私钥作为git用户进行身份验证的新连接.
步骤3)确保您与gitbox的连接使用git用户和新私钥
如果您使用终端连接到gitbox,请编辑/创建〜/ .ssh/config文件以包含预先配置与gitbox连接的别名.别名看起来像:
Host gitbox
User git
Hostname yourgitbox.com
Port 22
IdentityFile ~/.ssh/john_git_rsa
Run Code Online (Sandbox Code Playgroud)
现在,执行诸如> git clone gitbox:reponame.git或> git push gitbox:reponame.git之类的命令可确保您使用git用户和相应的私钥.如果没有这个别名,你必须做一些类似> git clone ssh://git@yourgitbox.com:22/reponame.git的内容,找出用于指定要使用的私钥的ssh开关 - 不是很漂亮.(注意:如果您在不使用此别名的情况下进行连接,则将使用您的默认ssh密钥,您将收到权限错误.)
或者,如果您使用IDE(NetBeans,Eclipse等):
您需要找到IDE的SSH设置并将其设置为使用您创建的新私钥(john_git_rsa),而不是在安装期间生成的默认密钥.您还需要确保推送存储库的URI设置为:
ssh://git@yourgitbox.com:22/reponame.git
Run Code Online (Sandbox Code Playgroud)
用户名设置为git,密码字段为空.这可确保当您连接到gitbox时,IDE将提供您刚刚设置的私钥和git用户.
现在你的推动应该有效.
Cha*_*esB 11
谷歌搜索"在钩子/更新时使用lib的空编译时间值",第一个结果是在Gitolite FAQ中:
你绕过了gitolite.您使用完整路径(即包括存储库/前缀)克隆了repo,可以直接在服务器上,也可以通过ssh,但使用可以访问shell的密钥.
解决方案:与上一个项目相同.
上一篇文章: