2012-05-28 7 views
6

मेरा प्रश्न शीर्षक में घोषित होने से अधिक सामान्य है।पुनरीक्षण नियंत्रण प्रणाली संशोधन कैसे पुनर्स्थापित करता है?

मुझे पता है कि स्रोत संस्करण नियंत्रण केवल अंतर के बारे में जानकारी संग्रहीत करता है। जैसा कि मैं समझता हूं तो विकिपीडिया करता है, और इसी तरह जिथब करता है।

लेकिन उनमें सभी के पास विशेष संशोधन के साथ पूरी फ़ाइल दिखाने की क्षमता है। क्या वे इसे पहले संशोधन से विशिष्ट में पुनर्स्थापित करते हैं?

और दूसरा प्रश्न। यदि वे केवल अंतर को स्टोर करते हैं, तो वे उन्हें संदर्भ के साथ ui में कैसे दिखाते हैं (परिवर्तन से पहले और बाद में थोड़ा सा पाठ)।

संपादित करें: GitHub भंडार पूरे बजाय की फोटो डेल्टा

उत्तर

6

मुझे लगता है कि स्रोत संस्करण नियंत्रण भंडार केवल अंतर के बारे में जानकारी पता है।

सवाल Git design decision on storing content rather than differences दिखाता है, यह नहीं बिल्कुल क्या Git करता है।
लिबक्सडिफ़ लाइब्रेरी से बाइनरी डेल्टा का उपयोग करते हुए, इसे "पैक किया गया" स्वरूप है, हालांकि, डेल्टाइफाइड फॉर्म में ऑब्जेक्ट्स स्टोर करने के लिए। लेकिन मुख्य रूप से नेटवर्क हस्तांतरण के लिए उपयोग किया जाता है।
"Is the git binary diff algorithm (delta storage) standardized?" देखें।
यही कारण है कि जब आप प्राप्त करते हैं तो गिट "resolving delta" होता है।

4

संस्करण नियंत्रण डेटा संग्रहीत करने के विभिन्न तरीकों के पेशेवरों और विपक्ष के बारे में एक बहुत ही रोचक पढ़ने के लिए मैं अत्यधिक एरिक सिंक के लेख Time and Space Tradeoffs in Version Control Storage पढ़ने की सलाह देता हूं।

संग्रहण संस्करण नियंत्रण सिस्टम के लिए सबसे कठिन चुनौतियों में से एक है। प्रत्येक फ़ाइल के लिए, हमें प्रत्येक संस्करण को स्टोर करना होगा जिसमें कभी भी मौजूद है। संस्करण नियंत्रण भंडार का तार्किक आकार कभी भी घटता नहीं है। यह सिर्फ बढ़ता और बढ़ता रहता है, और हर पुराने संस्करण को उपलब्ध रहने की आवश्यकता है।

तो, सबकुछ के प्रत्येक संस्करण को स्टोर करने का सबसे अच्छा तरीका क्या है?

3

विकिपीडिया, दुख की बात है ... डेटाबेस के रूप में कुछ प्रकार के एक्सएमएल (?) में डेटाबेस में प्रत्येक संशोधन को पाठ के रूप में रखता है।

wikipedia database schema पर एक नज़र डालें। विशेष रूप से हालिया परिवर्तन और पाठ।

इसलिए, उनके पास "जीवविज्ञान" पृष्ठ की पहली प्रतिलिपि के लिए अद्भुत ओ (1) लुकअप हैं। 2010-2012 में $ 8mil अमरीकी डालर से गुब्बारे के लिए विकिपीडिया के technology cost को 2011-2012 में 12 मिलियन अमरीकी डॉलर तक पहुंचाने का दुर्भाग्यपूर्ण साइड इफेक्ट है। यह एचडीडी (और बाकी सब कुछ) सस्ता हो रहा है, और अधिक महंगा नहीं है।

प्रत्येक फ़ाइल को रखने के संशोधन नियंत्रण के लिए बहुत कुछ। गिट एक प्यारा दृष्टिकोण लेता है। Is the git storage model wasteful? देखें।

यह उपरोक्त विधि के समान, प्रत्येक फ़ाइल को संग्रहीत करता है। एक बार रेपो द्वारा ली गई जगह एक निश्चित सीमा से अधिक हो जाती है, तो यह एक ब्रूट फोर्स रिपैक करता है (यह निर्धारित करने के लिए एक विकल्प है कि यह कितना मुश्किल कोशिश करता है - - विन्डो = [एन], --depth = [N]) जिसमें घंटों लग सकते हैं।यह कहा गया रेकैक (रिकर्सली डेल्टा के लिए डेल्टा और लापरवाही संपीड़न के संयोजन का उपयोग करता है, फिर आपके पास जो भी बिट्स है, उस पर लापरवाही लागू करें)।

एसवीएन जैसे अन्य सरल डेल्टा संपीड़न का उपयोग करते हैं। (स्मृति से, जिसे आप भरोसा नहीं करना चाहिए)।

फुटनोट: डेल्टा संपीड़न वृद्धिशील परिवर्तनों को स्टोर करता है। लापरवाह संपीड़न ज़िप, रार, आदि की तरह काफी है

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