Gitリポジトリの再パックが失敗する 質問する

Gitリポジトリの再パックが失敗する 質問する

メモリが限られたサーバー上に Git リポジトリがあります。サーバーから既存のリポジトリをクローンしようとすると、次のエラーが発生します。

hemi@ubuntu:$ git clone ssh://[email protected]/home/hemi/repos/articles
Initialized empty Git repository in /home/hemi/Skrivebord/articles/.git/
[email protected]'s password: 
remote: Counting objects: 666, done.
remote: warning: suboptimal pack - out of memory
remote: fatal: Out of memory, malloc failed
error: git upload-pack: git-pack-objects died with error.
fatal: git upload-pack: aborting due to possible repository corruption on the remote side.
remote: aborting due to possible repository corruption on the remote side.
fatal: early EOF
fatal: index-pack failed
hemi@ubuntu:$ 

このエラーに対処するために、元のリポジトリを再パックしようとしました(このフォーラム投稿)。ただし、リポジトリを再パックする代わりに、「git pack-objects」コマンドを使用する方法について説明します。

hemi@servername:~/repos/articles$ git repack -a -d --window-memory 10m --max-pack-size 100m
usage: git pack-objects [{ -q | --progress | --all-progress }]
        [--all-progress-implied]
        [--max-pack-size=N] [--local] [--incremental]
        [--window=N] [--window-memory=N] [--depth=N]
        [--no-reuse-delta] [--no-reuse-object] [--delta-base-offset]
        [--threads=N] [--non-empty] [--revs [--unpacked | --all]*]
        [--reflog] [--stdout | base-name] [--include-tag]
        [--keep-unreachable | --unpack-unreachable 
        [<ref-list | <object-list]

Git 1.6.5.7 がサーバーにインストールされています。

ベストアンサー1

このソリューションでは、ローカルとリモートの両方で作業コピーを取得できましたが、リモート リポジトリが再度再パックすることを決定したときに再び問題が発生します。幸い、両方のリポジトリの再パックに必要なメモリの量を減らす構成オプションを設定できます。これは基本的に、再パック時に追加したコマンド ライン パラメータをデフォルト オプションにします。したがって、リモートにログインし、リポジトリに変更して、次の操作を実行します。

git config pack.windowMemory 10m
git config pack.packSizeLimit 20m

ローカル リポジトリでも同じことを実行できます。(ちなみに、リポジトリが非常に大きいか、メモリが少ないマシンのどちらかだと思います。これらの値は非常に低いように思えます。)

再パック時にmallocエラーが発生する場合とても過去に大規模なリポジトリを作成したとき、、、、、の値も変更しましたが、core.packedgitwindowsizeそれ以上のオプションは必要ないようです:)core.packedgitlimitcore.deltacachesizepack.deltacachesizepack.windowpack.threads

おすすめ記事