Final güncellemeyi tamamlamak ve düzeltmek için: Çözüm burada iki şey bir arada olduğu ortaya çıktı: Graham Borlandsuggested Windows Git yerine Cygwin Git kullanma ve Git yapılandırma ayarları pack.threads = 1
ve gc.aggressiveWindow = 150
.Git gc, yapamaz
Büyük bir yerel Git deposum var, yaklaşık 40.000 işlem içeren bir SVN deposu olan git svn clone
. Bu depo üzerinde git gc
çalıştırmak çalışıyorum ve hiçbir yerde alıyorum:
$ 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
Ben 4GB RAM 64-bit çift çekirdekli Win7 makinede Cygwin içine Git 1.7.5.1 çalıştırıyorum. .git
dizini şu anda biraz 6.1GB üzerinde.
ben daha tam sistem bunu düzeltmek mümkün olup olmadığını görmek için, git gc --aggressive
çalışan denedim, ama hiçbir şanslar: aynı boyutta malloc
teşebbüs ile ben, yukarıda benzer bir ileti alıyorum ancak oldukça yüksek nesne sayısı (508,485 sayıldı, 493,506 sıkıştırıldı).
Ayrıca, Google tarafından önerildiği gibi, .gitconfig
dosyamın [pack]
parçasına çeşitli ikilemeler denedim; another StackOverflow question'dan en eksiksiz varlık. Benim .gitconfig
şimdi aşağıdaki ilgili satırları vardır, ama bu ayarı görüntülenir fark yapmış:
[pack]
windowMemory = 16m
threads = 1
window = 1
depth = 1
deltaCacheSize = 1
Ben gc
benim depo için git
alabilirsiniz konusunda herhangi bir öneriniz?
Düzenleme: Mark Longairsuggested biraz daha .gitconfig
dosya değişir. Yaptığım yeni satırlar aşağıda. Ancak değişiklikler hiçbir fark yaratmadı.
[core]
packedGitWindowSize = 1m
packedGitLimit = 256m
[pack]
packSizeLimit = 128m
Düzenleme 2: Michael Krelinsuggested takas/sayfa dosya boyutunu artırarak (WinXP talimatları here ve Win7 için benzer). Bunu denedim, ama hiçbir fark yaratmadı ve gerçekten de mevcut maksimum boyutu arttırdım ve Windows, kullandığınız sayfa dosyasının boyutunu büyütmeyi denememiş gibi görünüyor.
Şimdi bunun Cygwin içinde veya üzerinde bir bellek sınırından kaynaklanıp kaynaklanmadığına bakıyorum. "Verilen" i kontrol etmek için Cygwin'i yönetici ayrıcalıklarıyla çalıştırmaya çalışıyorum. "İçer" i (daha büyük olasılıkla görünüyor) kontrol etmek için, Cygwin's maximum memory settings ile bir oyun yaşıyorum.
Düzenleme 3: Cygwin'i kullanmayı tercih etmeme rağmen, Windows Git istemcisinin bellek sorunuyla ilgili anlaşmaları son derece iyi. Havuzumun düzenli olması gerektiğinde, sık sık her şeye geri döneceğim gibi görünüyor.
Windows Git istemcileriyle ilgili deneyimim genellikle bellek yönetimini daha da kötüye kullanmalarıydı. Cygwin Git'i, Windows Git istemcisinin üzerinde çalıştığı ~ 15.000'lik bir SVN deposunu işlemek için kullanabildim. Yine de, bir atış değer, sanırım! –
Whee! Normalde Windows Git istemcisini kullanmaktan hoşlanmayacak kadar çok iyi çalıştı. Teşekkür ederim! –