18

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'

何をしなければならないのかわからない。

手伝って頂けますか?

ありがとう

4

3 に答える 3

12

始める前に: 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 に新しい公開鍵を登録する

git を使用して gitolite-admin を管理する方法については、Google をすばやく検索してください。簡単に言えば、手順は次のとおりです。(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://git@yourgitbox.com:22/reponame.git のようにして、使用する秘密鍵を指定するための ssh スイッチを見つける必要があります。(注: このエイリアスを使用せずに接続すると、デフォルトの ssh キーが使用され、許可エラーが発生します。)

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

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

ssh://git@yourgitbox.com:22/reponame.git

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

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

于 2012-07-28T13:58:22.363 に答える
12

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

あなたはギトライトをバイパスしています。フル パス (つまり、repositories/ プレフィックスを含む) を使用して、サーバー上で直接、または ssh 経由でシェル アクセスを許可するキーを使用して、レポを複製しました。

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

前の箇条書き:

gitolite には別のキーペアを使用してください。セットアップ ページにもう少し長い説明があります。また、バイパスが問題を引き起こす理由と、バックグラウンドでのsshの 両方のドキュメントも参照してください。

于 2012-04-23T15:58:54.240 に答える