我刚安装了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://[email protected]/home/admin/repositories/gitolite-admin.git
! [remote rejected] master -> master (hook declined)
error: failed to push some refs to   'ssh://[email protected]/home/admin/repositories/gitolite-admin.git'

我不知道该怎么办。
你能帮助我吗?
谢谢

最佳答案

开始之前:gitbox是安装了git和gitolite的远程计算机。git用户是gitolite在gitbox上运行的用户。
您可以通过以下方式克服此错误:(1)生成新的密钥对;(2)在Gitbox上注册公钥;(3)确保连接到Gitbox时,始终使用新的私钥作为Git用户连接。
对于忍者来说,这可能就足够了。其余部分,以下是详细信息:
步骤1)生成新的密钥对
大多数IDE都能够创建新的公共/私有密钥对。或者,如果可以访问Linux机器,您可以使用以下方法生成自己的:

ssh-keygen -t rsa -f john_git_rsa

输出将是一组私有(john-git-rsa)和公共(john-git-rsa.pub)密钥(又称密钥对)。下一步需要将公钥复制到Gitbox。
步骤2)在Gitbox上注册新的公钥
你可以找到如何使用git管理gitolite管理员与谷歌的快速搜索。简单地说,步骤如下:(1)克隆gitolite管理存储库;(2)将新的公钥添加到gitolite admin/keydir/目录;(3)将更改推回到gitolite管理存储库。推送会触发Gitbox向Gitbox的Git用户的授权用户列表注册keydir/文件夹中的任何新密钥。
现在,您的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

现在,执行诸如>git clone gitbox:reponame.git或>git push gitbox:reponame.git之类的命令可以确保您使用的是git用户和适当的私钥。如果没有这个别名,您必须执行一些操作,如>git clone ssh://[email protected]:22/reponename.git,并找到指定要使用的私钥的ssh开关–不是漂亮的。(注意:如果不使用此别名进行连接,将使用默认的ssh密钥,并且将收到权限错误。)
或者如果您使用一个IDE(NetBeans、Eclipse等):
您需要找到您的IDE的ssh设置,并将其设置为使用您创建的新私钥(john_git_rsa),而不是安装期间生成的默认密钥。您还需要确保推送存储库的URI设置为如下所示:
ssh://[email protected]:22/reponame.git

用户名设置为git,密码字段为空。这样可以确保当您连接到GitBox时,您的IDE将提供您刚刚设置的私钥和Git用户。
现在你的推力应该起作用了。

09-04 03:24