2011-08-06 13 views
13

मैंने तेजी से निर्यात का उपयोग करके एक मर्कुरियल रिपोजिटरी को गिट में परिवर्तित कर दिया है। लेकिन गिट भंडार विशाल है: 18 जीबी के लिए गिट बनाम 3.4 जीबी Mercurial के लिए। मेरे सफाई चरणों में से कोई भी मदद नहीं की है।मेरी गिट भंडार Mercurial संस्करण से इतना बड़ा क्यों है?

मेरा Mercurial भंडार एक 65 एमबी फ़ाइल (SQLite प्रारूप में Anki फ़्लैशकार्ड) का प्रभुत्व है जो दैनिक अद्यतन हो जाता है। इसका इतिहास 2. जीबी, एचजी/स्टोर/डेटा के तहत बढ़ गया है।

मुझे उम्मीद थी कि गिट इतिहास को थोड़ा बेहतर करने में सक्षम हो सकता है, लेकिन मैं 18 जीबी से नीचे भंडार को कम करने में असमर्थ हूं!

मैंने git prune, git gc, और दूसरों का कोई फायदा नहीं हुआ है। मैंने .git फ़ोल्डर को ज़िप करने का भी प्रयास किया, और यह अभी भी बिल्कुल 18 जीबी के रूप में सामने आया।

मैं कुछ याद आ रही है?

अद्यतन: मैं बाज़ार (BzR) की कोशिश की, और यह केवल 2.3 जीबी तक मेरी भंडार संकुचित। अच्छा!

+0

मुझे नहीं पता कि यह क्यों मतदान किया गया था ... – Omnifarious

+1

क्या आपने 'git gc --aggressive' की कोशिश की है? – cdhowie

+0

मैंने 'git gc --aggressive' कोशिश की, लेकिन स्मृति स्मृति के साथ कुछ समय बाद यह मर गया। लेकिन उस समय तक, जो अस्थायी पैक फ़ाइल बना रही थी वह पहले से ही 5 जीबी से अधिक हो गई थी ... यह पहले से चलाए गए 'गिट जीसी' से बेहतर नहीं दिख रहा था। – slattery

उत्तर

7

यदि git gc विफल हो रहा है, तो git repack और फिर git gc मैन्युअल रूप से चलाने का प्रयास करें।


SVN, Git और एचजी के साथ मेरी टिप्पणियों:

मैं हमेशा देखा है कि SVN और एचजी खजाने इसी Git संग्रह की तुलना में बहुत छोटे थे। ऐसा इसलिए है क्योंकि फ़ाइल में प्रत्येक परिवर्तन - टेक्स्ट या बाइनरी, इसके लिए एक नई पूर्ण वस्तु जोड़ता है। एसवीएन में, केवल भिन्नता जोड़ दी जाती है, यहां तक ​​कि बाइनरी के मामले में और एसवीएन में बाइनरी भिन्नता भी बहुत अच्छी है।

लेकिन यह वह जगह है जहां पैक फाइलें आती हैं, क्योंकि वे समान वस्तुओं के बीच केवल diff (डेल्टा) स्टोर करते हैं और यहां तक ​​कि संकुचित भी होते हैं। पैकिंग के साथ भी, मैंने देखा है कि फाइलों की तरह और उन फ़ाइलों को बदलने वाले बदलावों के आधार पर गिट भंडार, बड़े होते हैं। यह कुछ ऐसा है जो मैं गिट के साथ स्वीकार करने आया हूं और यह एक समझौता है जिसे मैं यह स्वीकार करने के लिए तैयार हूं कि विभिन्न ऑपरेशन गिट के साथ कितनी तेजी से हैं।

+3

एसवीएन और गिट के बीच मेरा अनुभव बिल्कुल विपरीत है। मैंने जिन रिपॉजिटरीज़ की तुलना की है, उनमें से गिट रेपो एसवीएन की तुलना में 3-5 गुना छोटा है। –

+1

@ रयान स्टीवर्ट - जैसे मैंने कहा, यह फाइलों और परिवर्तनों की मात्रा पर निर्भर करेगा। माध्यम से बड़ी बाइनरी के साथ एक रेपो जो अक्सर बदलता है, एसवीएन की तुलना में गिट में बड़ा होगा, भले ही पैक किया जाए। – manojlds

+0

धन्यवाद @manojlds .. यह देखने के लिए निराशाजनक था कि गिट ने और अधिक जगह ले ली, लेकिन मुझे लगता है कि मुझे इसे स्वीकार करना है। मैं इस भंडार को अब Mercurial में रखूंगा। शायद भविष्य में, गिट इस भंडार को कुशलतापूर्वक Mercurial के रूप में स्टोर करने में सक्षम हो जाएगा। – slattery

9

एक कारण यह हो सकता है कि Mercurial में एक बहुत कॉम्पैक्ट स्टोरेज प्रारूप है जिसमें बाइनरी के लिए भी भिन्नताएं शामिल हैं। और संस्करणों को फिर से बनाने के लिए diffs का उपयोग करने से बहुत समय लग सकता है, जैसे ही diffs + पुराना मूल पूर्ण स्नैपशॉट के आकार से दोगुना हो जाता है, यह एक पूर्ण स्नैपशॉट स्टोर करेगा।

व्यक्तिगत रूप से, मैं डेटाबेस फ़ाइल के बजाय अपने एसक्लाइट डेटाबेस का डंप संग्रहीत करने का प्रयास करता हूं और देखता हूं कि यह आपको कहां प्राप्त करता है। यह कहीं अधिक कुशल हो सकता है।

मुझे नहीं पता कि गिट का भंडारण प्रारूप क्या है। लेकिन मुझे लगता है कि इसमें मर्कुरियल के समान तरीके से भिन्नता शामिल नहीं है।

+3

गिट पैक पर ज़्लिब के पास के साथ-साथ अंतर संपीड़न भी करता है। – cdhowie

+0

जानकारी के लिए धन्यवाद। मैं बस निराश हूं कि मैं आराम से इस भंडार को गिट पर स्विच करने में सक्षम नहीं हूं। – slattery

+6

+1 डीबी खुद को संस्करणित करने के बजाए एक स्क्लाइट डंप का सुझाव देने के लिए +1। गिट (और मर्कुरियल भी वास्तव में) मुख्य रूप से * स्रोत * नियंत्रण प्रणाली होने का इरादा है, न कि सभी प्रकार के डेटा के लिए संस्करण नियंत्रण प्रणाली। निस्संदेह यह निश्चित रूप से आप जो भी फेंकते हैं उसे संभाल सकते हैं; यह बस अंतरिक्ष का एक टन ले सकता है। – MatrixFrog

0

Mercurial से माइग्रेट किए गए एक भंडार पर git gc --aggressive चल रहा है मेरे लिए काम किया। यह 500 एमबी से 150 एमबी तक कम हो गया।

संबंधित मुद्दे