अंतिम अद्यतन पूरा करने के लिए और तय: यहाँ समाधान निकला दो चीजों के एक संयोजन है: Graham Borlandsuggested के रूप में विंडोज Git बजाय Cygwin Git का उपयोग कर, और Git config सेटिंग्स pack.threads = 1
और gc.aggressiveWindow = 150
।Git अत्यधिक स्मृति का उपयोग जीसी, असमर्थ
मैं एक बड़ी स्थानीय Git भंडार, 40,000 के बारे में प्रतिबद्ध के साथ एक SVN भंडार का एक git svn clone
है। मैं इस भंडार से अधिक 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
मैं Git 1.7.5.1 चल रहा हूँ Cygwin अंदर 4GB रैम के साथ एक 64-बिट डुअल कोर Win7 मशीन पर। .git
निर्देशिका वर्तमान में 6.1GB से थोड़ा कम है।
मैं git gc --aggressive
होने के बाद की कोशिश की, अगर अधिक पूरी प्रणाली इसे ठीक करने में सक्षम है देखने के लिए है, लेकिन कोई किस्मत: मैं, ऊपर करने के लिए इसी तरह की एक संदेश मिलता है एक ही आकार के साथ प्रयास किया malloc
, लेकिन एक काफी अधिक ऑब्जेक्ट गणना (508,485 गिना गया, 493,506 संपीड़ित)।
मैंने Google- मिश्रित twiddles द्वारा [pack]
पर .gitconfig
फ़ाइल के भाग के अनुसार सुझाव दिया है; another StackOverflow question से सबसे पूरा होना। मेरे .gitconfig
अब निम्नलिखित प्रासंगिक लाइनों है, लेकिन इन प्रकट होता है की स्थापना में कोई अंतर नहीं बना दिया है करने के लिए:
[pack]
windowMemory = 16m
threads = 1
window = 1
depth = 1
deltaCacheSize = 1
मैं gc
मेरी भंडार को git
कैसे प्राप्त कर सकते हैं पर कोई सुझाव?
संपादित: Mark Longairsuggested कुछ और .gitconfig
फ़ाइल परिवर्तन। जो मैंने बनाया, नीचे नई लाइनें। लेकिन परिवर्तनों ने कोई फर्क नहीं पड़ता।
[core]
packedGitWindowSize = 1m
packedGitLimit = 256m
[pack]
packSizeLimit = 128m
संपादित 2: Michael Krelinsuggested स्वैप/पृष्ठ फ़ाइल आकार में वृद्धि (WinXP निर्देश here, और यह Win7 के लिए इसी तरह की है)। मैंने कोशिश की, लेकिन इससे कोई फर्क नहीं पड़ता, और वास्तव में मैंने केवल अधिकतम आकार को बढ़ाया, और ऐसा लगता है कि विंडोज़ ने कभी भी पेज फ़ाइल के आकार को बढ़ाने की कोशिश नहीं की थी।
अब मैं देख रहा हूं कि यह सिग्विन पर या उसके अंदर लगाई गई स्मृति सीमा के कारण हुआ था या नहीं। "लगाया गया" जांचने के लिए, मैं व्यवस्थापक विशेषाधिकारों के साथ सिगविन चलाने की कोशिश कर रहा हूं। "भीतर" की जांच करने के लिए (जो अधिक संभावना दिखता है), मेरे पास Cygwin's maximum memory settings के साथ एक खेल है।
संपादित करें 3: हालांकि मैं सिगविन का उपयोग करना पसंद कर सकता हूं, यह विंडोज गिट क्लाइंट को स्मृति समस्या के साथ ठीक से पता चला है। ऐसा लगता है कि जब मैं अपने भंडार को साफ-सुथरा करता हूं तो मैं उस पर वापस गिर जाऊंगा।
विंडोज गिट क्लाइंट का मेरा अनुभव आम तौर पर यह रहा है कि वे स्मृति प्रबंधन को और भी बदतर बनाते हैं- मैं ~ 15,000 प्रतिबद्ध एसवीएन रिपोजिटरी को संभालने के लिए सिगविन गिट प्राप्त करने में सक्षम हूं कि विंडोज गिट क्लाइंट मैंने बार-बार कोशिश की है। फिर भी, एक शॉट के लायक, मुझे लगता है! –
व्ही! जैसा कि मैं सामान्य रूप से विंडोज गिट क्लाइंट का उपयोग करना पसंद नहीं कर सकता, यह ठीक काम करता है। धन्यवाद! –