web-dev-qa-db-ja.com

git、gitoliteエラープッシュ

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'

何をしなければならないのかわかりません。

手伝って頂けますか?

ありがとう

17
buffle

始める前に:gitboxは、gitとgitoliteがインストールされたリモートマシンです。 gitユーザーは、gitboxでのようにgitoliteを実行するユーザーです。

このエラーを克服するには、(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に新しい公開鍵を登録します

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

これで、> git clone gitbox:reponame.git、> git Push gitbox:reponame.gitなどのコマンドを実行すると、gitユーザーと適切な秘密鍵を使用していることが保証されます。このエイリアスがないと、> git clone ssh://[email protected]:22/reponame.gitのようなことをして、使用する秘密鍵を指定するためのsshスイッチを見つける必要があります。 (注:このエイリアスを使用せずに接続すると、デフォルトのsshキーが使用され、アクセス許可エラーが発生します。)

[〜#〜]または[〜#〜] IDE(NetBeans、Eclipseなど)を使用する場合):

IDEのSSH設定を見つけて、インストール中に生成されたデフォルトのキーの代わりに、作成した新しい秘密キー(john_git_rsa)を使用するように設定する必要があります。また、プッシュリポジトリのURIが次のように設定されていることを確認する必要があります。

ssh://[email protected]:22/reponame.git

ユーザー名がgitに設定されており、パスワードフィールドが空であること。これにより、gitboxに接続しているときに、IDEが設定した秘密鍵とgitユーザーを提供することが保証されます。

これで、プッシュが機能するはずです。

12
roberthernandez

「フック/更新時にlibを使用するために指定された空のコンパイル時の値」をグーグルで検索すると、最初の結果は Gitolite FAQ :になります。

あなたはジトライトをバイパスしています。サーバー上で直接、またはsshを介して、シェルアクセスを許可するキーを使用して、フルパス(つまり、リポジトリ/プレフィックスを含む)を使用してリポジトリのクローンを作成しました。

解決策:前の箇条書きと同じです。

前の箇条書き:

ジトライトには別のキーペアを使用してください。セットアップページで少し長い議論があります。背景については、 バイパスが問題を引き起こす理由 および ssh の両方のドキュメントも参照してください。

11
CharlesB

#roberthernandezからの非常に良いコメントですが、これにいくつかの強調を加えたいと思います。 gitoliteのインストール(そしてもちろんPush'ing)に関する私の大きな問題は、 '〜/ bin'ディレクトリがPATH環境変数にあることを確認することでした。この設定を行うには、export PATH=$PATH:~/binを使用する必要があります。このオプションがないと、gitoliteはプロセスを実行できず、あなたからのプッシュに問題があります。さらに、その後はgilotile setup ...の代わりにbin/gitolite setup ...を使用できます。

0