
新しい Centos 6 サーバーを立ち上げ、yum 経由で git バージョン 1.7.1 をインストールしました。アクセスには Apache 経由のスマート http メソッドを使用しています。
リモート サーバーにプッシュしようとすると、次の結果が出力されます。
$ git push origin master
Password:
Counting objects: 6, done.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (6/6), 436 bytes, done.
Total 6 (delta 0), reused 0 (delta 0)
error: unpack failed: index-pack abnormal exit
以下のことを試してみましたが、違いはありませんでした:
- chown -R apache:apache /path/to/git/repository (httpd は apache として実行されます)
- chown -R apache:users /path/to/git/repository
- chmod -R 777 /path/to/git/repository (明らかに安全ではありませんが、ファイル権限の問題を排除したかったのです)
プッシュを機能させるには何を試みればよいでしょうか?
答え1
これは次のようなものかもしれませんhttps://stackoverflow.com/questions/4826639/gitリポジトリの再パックが失敗するリポジトリが大きい (1~2 GB) ときに、サーバーのメモリが不足すると、同様のエラーが発生することがあります。具体的には、サーバー上の「git pack-objects」プロセスが大量のメモリとプロセッサ時間を消費します。
解決策としては、サーバー上のリポジトリを再パックすることが含まれるようです。
git repack -a -d -f --window-memory 10m --max-pack-size 20m
または、次のようにサーバー上の Git 構成を調整してメモリ使用量を削減します。
git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
使用可能なメモリの量に応じて、10m と 20m の値を調整する必要がある場合があります。