37

最終的な更新と修正: ここでの解決策は、 Graham Borland が提案したようにCygwin Git ではなく Windows Git を使用することと、Git 構成設定pack.threads = 1gc.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 クライアントがメモリの問題をうまく処理していることがわかりました。私のリポジトリが整頓されている必要があるとき、私は時々それに戻ってくるようです。

4

5 に答える 5

12

私は同じ問題を抱えていました。これまでに述べた解決策を試してみましたが、成功しませんでした。しかし、大きな画像ファイルをリポジトリに追加した後に git gc に関する問題が発生したため、.gitattributes ファイルを作成し、それらの大きなファイルのデルタ圧縮をオフにしました。

*.tga -delta
*.psd -delta

出来た。

于 2011-12-31T05:47:58.283 に答える
7

Cygwin 内で実行するよりも、msysGitなどのネイティブ Windows クライアントを実行する方が運が良いかもしれません。

于 2011-11-21T17:17:23.303 に答える
6

デフォルト値よりも低い値に制限しようとする可能性のあるその他の構成オプションには、次のものがあります。

  • pack.packSizeLimit
  • core.packedGitWindowSize
  • core.packedGitLimit

...これらはすべてドキュメントに記載されていgit configます。どの単位が理解されているかを毎回チェックすることは特に価値があります。これは私が過去に間違えたものです。

于 2011-11-21T16:09:28.197 に答える
1

たぶん、一時的に実物よりも大きなスワップ ファイルを追加し、別の場所でコーヒーを数杯飲むとよいでしょうか?

于 2011-11-21T15:48:20.560 に答える