1

buildbot を使用して継続的インテグレーションを実行しています。組み込みの Git ビルド ステップでは、次のコマンド ラインが生成されます。 C:\Program Files\Git\bin\git.EXE fetch -t file:///s:/Repositories/repo +master

s: buildbot スレーブにマップされた debian サーバー上の samba 共有です。

次のエラーで断続的に (約 50 ビルドに 1 回) 失敗します。

error: inflate: データ ストリーム エラー (不正なデータ チェック)
致命的: パックのオフセット 26936 に不正なオブジェクトがあります: inflate は -3 を返しました
致命的: インデックス パックに失敗しました
致命的: 書き込みエラー: 引数が無効です

これを引き起こしている原因と、それを修正する方法を知っている人はいますか?

4

1 に答える 1

0

この問題の偶発的な性質は、ハードウェアの問題 (ディスクまたはメモリの破損) のような外部の原因につながる可能性があります。たとえば、このスレッド
を 参照してください。彼らは悪いレポを正しく再クローンするためにすべてのプロセスを試みますが、それは古い git 1.5 用であったため、もはや正確ではない可能性があります。 参考までに、プロセスをここに残します。

どうやら、正しいクローンを取得する最も簡単な方法は次のとおりです。

1/ 新しい空のリポジトリを初期化します。
2/ 'origin' リモートを次のように追加します。git remote add -f origin http://repo.or.cz/r/msysgit.git
3/ エラーにもかかわらず、手動でパックをフェッチして続行します。

(cd .git/objects/pack/ && curl -O \

http://repo.or.cz/r/msysgit.git/objects/pack/pack-5b51af9cb1b1122d27ddd53d40a8c3e4472ae9e4.pack)

4/ 付属のバンドルを使用して、破損していないオブジェクトを追加します
git bundle unbundle borked.bundle
5/ 再び 'origin' から取得します (参照を正しく更新するため): git fetch origin
6/ 手動で (!!!) 壊れた一時オブジェクト ファイルを削除します:

find .git -name \*.temp -exec rm {} \;

7/さて、「git gc」

すでに (ボークされた) チェックアウトがある場合は、4、6、7 で問題を解決できる可能性があります。

于 2010-07-22T14:01:20.363 に答える