4

リポジトリをホストするために Gitolite がインストールされたサーバーを持っています。昨日と今日、サーバーにさらにコミットをプッシュしようとしたときに、新しいリポジトリを作成しました。

fatal: object 86eeaa0c5a154ff3df34d6a43669930b9c6c7f59 is corrupted
error: unpack failed: unpack-objects abnormal exit
error: failed to push some refs to

リポジトリはかなり新しいので、以前のコミットを失うことについてあまり気にしていなかったので、ローカルとリモートの両方のリポジトリを削除しましたが、それでも同じエラーが発生します。

私は自分のコミット履歴を維持することについてあまり心配していないと言っているので、もう一度機能させたいだけです!

4

1 に答える 1

5

コメントに見られるように、追加のレポには作成中に問題があります (つまり、新しいレポを宣言するファイルでgitolite-adminレポをプッシュバックするとき)gitolite.conf

以前はこれに気づきませんでしたが、新しいレポを作成すると、次のエラーが発生します。

remote: line 1 too long: command="/home/git/gitolite/src/gitolite... 
remote: FATAL: fingerprinting failed for /tmp/Cdug9Itivq 

しかし、それはレポを作成しています/home/git/repositories

この操作は、次のコンパイル後のトリガーで行われssh-authkeysます。

sub fp_file {
    return $selinux++ if $selinux; # return a unique "fingerprint" to prevent noise
    my $f = shift;
    my $fp = `ssh-keygen -l -f '$f'`;
    chomp($fp);
    _die "fingerprinting failed for '$f'" unless $fp =~ /([0-9a-f][0-9a-f](:[0-9a-f][0-9a-f])+)/;
    $fp = $1;
    return $fp;
}

これは、「セルフ サービス キー管理ssh-keygen -l -f <path_to_public_key.pub>」に示されているように、正しいパターンに従っていないことを意味します。

キーが次のように生成されていることを確認してください。

ssh-keygen -t rsa -f "${H}/.ssh/git" -C "Gitolite Admin access (not interactive)" -q -P ""

2015 年 4 月の更新:

「 Gitolite - remote: FATAL: Fingerprinting failed for 'keydir/' 」で starfry が述べように:

バージョン 6.8 で、OpenSSH のキー フィンガープリントの形式が変更されました。

およびにFingerprintHashオプションを追加し、同等のコマンドライン フラグを他のツールに追加して、キー フィンガープリントに使用されるアルゴリズムを制御します。デフォルトは MD5 から SHA256 に変更され、フォーマットは 16 進数から base64 に変更されます。ssh(1)sshd(8)

フィンガープリントの先頭にハッシュ アルゴリズムが追加されました。
新しいフォーマットの例:

SHA256:mVPwvezndPv/ARoIadVY98vAC0g+P/5633yTC4d/wXE

ビジュアル ホスト キーも異なることに注意してください。

gitoliteの最新の git チェックアウトは、2015年 3 月 18 日以降、この新しい形式を認識しています。

于 2012-05-24T19:26:15.373 に答える