最終的な更新と修正: ここでの解決策は、 Graham Borland が提案したようにCygwin Git ではなく Windows Git を使用することと、Git 構成設定pack.threads = 1
とgc.aggressiveWindow = 150
.
私は大規模なローカル Git リポジトリを持っています。これgit svn clone
は、約 40,000 のコミットを持つ SVN リポジトリの 1 つです。私はgit gc
このリポジトリを実行しようとしていますが、どこにも行きません:
$ git gc --auto
Auto packing the repository for optimum performance. You may also
run "git gc" manually. See "git help gc" for more information.
Counting objects: 25966, done.
Compressing objects: 100% (25249/25249), done.
fatal: Out of memory, malloc failed (tried to allocate 426523986 bytes)
error: failed to run repack
4GB RAMを搭載した64ビットデュアルコアWin7マシンでCygwin内でGit 1.7.5.1を実行しています。現在、.git
ディレクトリは 6.1GB を少し超えています。
を実行git gc --aggressive
して、より完全なシステムで修正できるかどうかを確認しましたが、うまくいきませんでした: 上記と同様のメッセージが表示されますmalloc
。 )。
また、Google が示唆するように、ファイルの[pack]
一部にさまざまな調整を加えてみました。.gitconfig
最も完全なものは、別の StackOverflow questionからのものです。現在、次の.gitconfig
関連行がありますが、これらを設定しても違いはないようです。
[pack]
windowMemory = 16m
threads = 1
window = 1
depth = 1
deltaCacheSize = 1
リポジトリにアクセスgit
する方法について何か提案はありますか?gc
編集: Mark Longair がさらにファイルの変更を提案しました。.gitconfig
私が作ったもの、以下の新しい行。しかし、変更は何の違いもありませんでした。
[core]
packedGitWindowSize = 1m
packedGitLimit = 256m
[pack]
packSizeLimit = 128m
編集 2 : Michael Krelinは、スワップ/ページ ファイルのサイズを大きくすることを 提案しました (WinXP の手順はこちら、Win7 の場合も同様です)。私はそれを試しましたが、違いはありませんでした。実際、使用可能な最大サイズを増やしただけで、Windows が使用していたページ ファイルのサイズを決して増やそうとしなかったようです。
これが Cygwin 内のメモリ制限によるものか、Cygwin に課せられたものかを調べています。「課された」を確認するために、Cygwinを管理者権限で実行しようとしています。「内」(可能性が高い) を確認するために、Cygwin の最大メモリ設定で遊んでいます。
編集 3 : Cygwin の使用を好むかもしれませんが、Windows Git クライアントがメモリの問題をうまく処理していることがわかりました。私のリポジトリが整頓されている必要があるとき、私は時々それに戻ってくるようです。