大容量(1.4GB)のGitリポジトリを32ビットのDebian VM、384MBのRAMを搭載)に複製しようとしています。Git1.7.2.5を使用しており、SSHプロトコルを使用してクローン( 'git clone [email protected]:/ my/repo')
クローンは次のメッセージで失敗します:
remote: Counting objects: 18797, done.
remote: warning: subobtimal pack - out of memory
remote: Compressing objects: 100% (10363/10363), done.
fatal: out of memory, malloc failed (tried to allocate 905574791 bytes)
fatal: index-pack failed
Gitがホストリポジトリ側で再パックするために使用するメモリの量を減らして、再パックしようとしました。
git config pack.windowMemory 10m
git config pack.packSizeLimit 20m
git repack -a -d
私の質問は次のとおりです。
どちらの場合でも、クローンを成功させるために私にできることはありますか?オンラインで考えられる解決策の多くは、次のことの一部またはすべてを含みますが、この場合はどれも受け入れられません。
前もって感謝します。
git clone
はpack.packSizeLimit
設定を確認しません。前回確認してから変更されていない限り、とにかくすべてを1つのパックに転送します。
SCPまたはRsyncを使用することは、実際に問題を回避する方法かもしれません。 「役に立たない」大きなファイルを削除してから、クローンを作成しようとしているリポジトリを再パックすることも役立ちます。
より多くのRAMをVMに与えることも役立つかもしれません-900MBを割り当てるために64ビットのアドレス空間は必要ないと思います...あなたRAMを増やす代わりに、900MBパッケージを処理するのに十分なSWAPスペースを与えることもできます。
今日、私は同じ問題を抱えていました。 Gitサーバーのメモリが不足しましたが、gitlabはまだ使用可能なメモリがあると報告しました。 htopでメモリをチェックし(利用可能なものはないと報告されました)、gitlabを再起動すると、すべてが正常に戻りました。
MSysGit 32ビットを使用してWindowsで同様の問題が発生しました。 Cygwin からのgit64ビットがその仕事をしました。たぶん、64ビットのDebian VM(32ビットのものではなく)を使用する必要があります。
私の 元の回答 質問で利用可能です WindowsでGit、「メモリ不足-mallocが失敗しました」 。