2009-09-27 11 views
11

मैं अपनी फ़ाइलों के लिए एक एसवीएन भंडार को संभालने के लिए मैक पर संस्करण अनुप्रयोग का उपयोग कर रहा हूं। मेरी कामकाजी प्रति लगभग 6   एमबी है, फिर भी मेरा भंडार केवल 1.4   एमबी है, और मैं भंडार में पांच संशोधन कर रहा हूं!सबवर्जन रिपोजिटरी की कामकाजी प्रति की तुलना में एक छोटा फ़ाइल आकार है?

यह कैसे हो सकता है?

+0

संपीड़न इसे समझा सकता है, लेकिन मैं ईमानदारी से नहीं जानता। शुद्ध पाठ के लिए 75% संपीड़न अनसुना नहीं है। –

+0

(नोट, यह वास्तव में लगभग 75% है क्योंकि एसवीएन में केवल परिवर्तन होते हैं, प्रत्येक संशोधन की पूर्ण प्रतियां नहीं)) –

उत्तर

18

एसवीएन आपके कोड के एक संस्करण को प्रत्येक संस्करण के बीच अंतर को संपीड़ित करता है। यही कारण है कि इसमें ज्यादा जगह नहीं है।

भंडार छोटे रखने के लिए, सबवर्सन deltification (या deltified भंडारण) भंडार के भीतर ही उपयोग करता है। Deltification में डेटा के एक हिस्से के को संग्रह के कुछ अन्य खंड डेटा के अंतर के रूप में डेटा के एक हिस्से के एन्कोडिंग शामिल है। डेटा के दो टुकड़े बहुत समान हैं, तो यह deltification के लिए परिणाम भंडारण बचत में अंतरिक्ष मूल डेटा के आकार के बराबर लेने से deltified हिस्सा-बल्कि, यह कहना ही काफी स्थान में समा जाता, "मैं, बस यहाँ पर डेटा के इस अन्य टुकड़ा की तरह लग रहे परिवर्तन के निम्नलिखित जोड़ी के लिए को छोड़कर।" परिणाम है कि भंडार डेटा है कि हो जाता है के सबसे भारी-अर्थात्, संस्करणीकृत फ़ाइलों की सामग्री - उस डेटा के पूर्ण-पाठ प्रतिनिधित्व के मूल की तुलना में छोटे आकार में संग्रहीत किया गया है। और सबवर्सन 1.4 या उसके बाद के साथ बनाए गए रिपॉजिटरीज़ के लिए, स्पेस बचत भी बेहतर है-अब फ़ाइल सामग्री के पूर्ण-पाठ प्रस्तुतिकरण स्वयं संकुचित हो जाते हैं।

अधिक विस्तार पाया जा सकता है here

5

आपका काम कर प्रति आम तौर पर ऐसे वस्तु कोड और precompiled हेडर कि संशोधन नियंत्रित होने की आवश्यकता नहीं है के रूप में अतिरिक्त अस्थायी फ़ाइलों का एक बहुत कुछ शामिल है। मुझे लगता है कि अगर आप कामकाजी प्रतिलिपि साफ करते हैं, या एक नया चेकआउट बनाते हैं तो यह बहुत छोटा होगा।

+2

यह सच है, लेकिन नवामन और वोकेनन द्वारा बताए गए कारणों के लिए, यहां तक ​​कि कोई भी जेनरेट की गई एक नई जांच की गई साफ काम करने वाली प्रति फ़ाइलों (जैसे precompiled शीर्षलेख और ऑब्जेक्ट कोड) भंडार से काफी बड़ा हो सकता है: कार्यशील प्रति में प्रत्येक फ़ाइल की दो प्रतियां असंपीड़ित (काम कर रही और पुरानी) होती हैं, जबकि भंडार में प्रत्येक फ़ाइल की 1 संपीड़ित प्रति होती है + deltafied परिवर्तन (जो कर सकते हैं यदि परिवर्तन स्थानीयकृत थे तो बहुत छोटा हो)। –

2

यहां कुछ कारण हैं जिन्हें मैं के बारे में सोच सकता हूं - svn आपके संशोधन को परिवर्तनों के रूप में संग्रहीत करता है और संस्करण वाली फ़ाइलों के रूप में नहीं। - एसवीएन अपने बैकएंड (एफएसएफएस/बीडीबी) में डेटा स्टोर करता है जिसमें कुछ संपीड़न तकनीकें होती हैं जो आकार को कम करती हैं। यदि भंडार में अधिक टेक्स्ट आधारित फाइलें हैं तो संपीड़न जितना अधिक होगा, आकार में भारी कमी की उम्मीद कर सकते हैं। - नेटवर्क कनेक्शन के बिना कुछ आदेशों (जैसे svn जानकारी, diff, आदि) का समर्थन करने के लिए (तेज परिणाम भी प्राप्त करने के लिए) svn .svn dirs में कुछ अतिरिक्त जानकारी रखता है। अतिरिक्त जानकारी में पूरी कार्यशील प्रति की एक प्रति शामिल है।

8

नवामन के उत्तर ने पहले ही समझाया है कि भंडार में डेटा काफी कुशलता से संकलित है।

कहानी का दूसरा भाग यह है कि उपversण प्रत्येक फ़ाइल में .svn फ़ोल्डर्स के अंदर आपकी कार्य प्रतिलिपि के अंदर रखता है। यह रिपॉजिटरी सर्वर से संपर्क करने की आवश्यकता के बिना svn status या svn diff कमांड को संभालने में सक्षम बनाता है, लेकिन आपकी कार्यशील प्रति के आकार को दोगुना करता है।

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