मुझे अपने गलतफहमी अप स्पष्ट करते हैं:
किसी को भी मुझे क्यों Git डेवलपर्स फ़ाइलें (धब्बे) की सामग्री स्टोर करने के लिए एक डिजाइन निर्णय लिया करने के लिए कुछ विचार है, इसलिए जब दे सका सामग्री एक नया ब्लॉब बनाने की जरूरत है?
(प्रारंभिक) Git डिजाइन की काफी अच्छा विवरण टॉम प्रेस्टन-वर्नर के The Git Parable निबंध (Greg Hewgill answer में से जुड़ा हुआ एक के अतिरिक्त) में पाया जा सकता।
इसके पीछे विचार यह है कि एक नई संशोधन में आमतौर पर (बड़ी पर्याप्त परियोजना में) एक परियोजना परिवर्तन में बड़ी संख्या में फाइलों से बाहर कुछ फाइलें होती हैं, इसलिए फ़ाइल सामग्री के केवल अलग-अलग संस्करणों को संग्रहीत करने से अंतरिक्ष बचाता है। यह वही विचार है कि सबवर्जन का उपयोग अपनी 'सस्ती प्रति' तकनीक में करता है (यह हार्डलिंकिंग, आईआईआरसी का उपयोग करता है)।
इसके अलावा फ़ाइल की सामग्री zlib (डिफ्लेट) संपीड़ित (या गिट रिपोजिटरी डेटाबेस में प्रत्येक ऑब्जेक्ट को संपीड़ित किया गया है, कॉमिट ऑब्जेक्ट्स सहित संकुचित है)।
मेरा मानना है कि सामग्री सबवर्सन भंडार संशोधन के बजाय, इसलिए जब सामग्री में परिवर्तन, यह बस दोनों के बीच अंतर का ट्रैक रखता है। गिट ने ऐसा भी नहीं किया हो सकता है? संशोधन के बजाय सामग्री भंडारण का क्या फायदा है?
मुझे समझ में नहीं आता कि आप यहां क्या कहना चाहते हैं।
यदि यह भंडारण अंतर अंतरिक्ष को बचाता है, तो मैं आपको बताना चाहता हूं कि 'ढीला' प्रारूप के अलावा (जहां प्रत्येक ब्लॉब, यानी फ़ाइल की प्रत्येक (अलग) सामग्री अलग फ़ाइल में संग्रहीत होती है .git
) 'पैक' प्रारूप है, जहां लिबक्सडिफ़ लाइब्रेरी से बाइनरी डेल्टा का उपयोग करके कई वस्तुओं को डेल्टाइफाइड रूप में संग्रहीत किया जाता है।
यह प्रारूप नेटवर्क स्थानांतरण के लिए बनाया गया था (बड़ी डिस्क स्थान सस्ता हो सकती है, लेकिन बैंडविड्थ नहीं है), और ऑन-डिस्क प्रारूप के रूप में अनुकूलित किया गया था। यह प्रारूप बहुत ही कुशल है, यदि अधिक कुशल संस्करण नियंत्रण प्रणाली स्वरूप नहीं हैं, तो गिट रिपॉजिटरीज़ छोटे या विभिन्न संस्करण नियंत्रण प्रणालियों के बीच सबसे छोटे में से एक को अधिक कुशलता में से एक है। परिस्थितियों पर निर्भर करता Git भंडार से भरा क्लोन (जो पूरा इतिहास होता है) बराबर सबवर्सन चेकआउट की तुलना में छोटे हो सकता है (जो प्राचीन परिवर्तन के अतिरिक्त प्रति होता है ताकि नेटवर्क हस्तांतरण की आवश्यकता के बिना svn diff
और svn status
काम, उचित गति के साथ)।
यह डिज़ाइन ('ढीला' और 'पैक किया गया' प्रारूप) बहुत कुशल पैकिंग का लाभ है, लेकिन यह नुकसान था कि आपको "git gc
" (डिस्क स्थान के लिए नहीं, बल्कि प्रदर्शन - डिस्क I के लिए मैन्युअल रूप से दोबारा मरम्मत करना पड़ा था।/ओ); आजकल अधिकांश गिट कमांड रिपॉजिटरी (सुरक्षित रूप से) की आवश्यकता होने पर मरम्मत करते हैं।
"गिट डेवलपर्स" जो 'ढीले' प्रारूप के बारे में डिज़ाइन निर्णय लेता है, लिनस टोरवाल्ड्स है। डेवलपर ** एस ** नहीं। –