2012-08-13 14 views
7

मैं बड़ी कामकाजी निर्देशिका (कई गिग) पर सूक्ष्म परिवर्तन (कई दिन) ट्रैक करने के लिए गिट का उपयोग करना चाहता हूं। डेटा मिश्रित द्विआधारी/सादा पाठ होगा। बाइनरी डेटा टेक्स्ट की जानकारी जितनी ज्यादा बदल नहीं जाएगी। पुराने कामों तक पहुंच की शायद ही कभी आवश्यकता होगी, और धीमा हो सकता है, जबकि हाल के इतिहास को तेजी से होना जरूरी है।गिट-संग्रह पुराने काम करता है

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

यदि नहीं, तो क्या कोई ऐसा उपकरण है जो इस उद्देश्य के लिए अधिक उपयुक्त है? मुझे गिट पसंद है क्योंकि मुझे पता है और मैं संस्करण नियंत्रण और diffs चाहता हूँ। मुझे गिट की किसी भी उन्नत विशेषताओं की आवश्यकता नहीं होगी (जैसे ब्रांचिंग/विलय, वितरित नहीं), इसलिए कोई अन्य समान वीसीएस अच्छा होगा।

+0

अधिकतर टेक्स्ट फ़ाइलों में एक दिन में कई बदलावों को शायद "माइक्रो" के रूप में गिना जाता है, जो प्रतिबद्धता दर के बारे में है, किसी भी पुराने प्रोजेक्ट को नए विकास के बजाए बग फिक्सिंग पर भारी चरणों के दौरान मिलता है। गिट * को बिना किसी ब्लोट के इसे संभालने में सक्षम होना चाहिए। क्या आपका भंडार वास्तव में आकार में बढ़ रहा है कि जल्दी से आपको अपने इतिहास के ऑफ-साइट का हिस्सा डंप करने की आवश्यकता है? – millimoose

+0

सिवाय इसके कि कुल डेटा आकार> 100GB हो सकता है। चतुर संपीड़न के साथ भी, 10,000+ फ़ाइलों के पैमाने पर भी मामूली परिवर्तन दिन में कई बार स्थानीय रूप से भंडार कैश में महत्वपूर्ण रूप से जोड़ देगा। मैं स्वचालित रूप से पुन: प्रयास करने की योजना बना रहा हूं, लेकिन उस उपयोगीता की सीमा भी है। यह वास्तव में गिट के लिए डिज़ाइन नहीं किया गया था, इसलिए मैं सोच रहा था कि क्या मैंने पहले से ही उस चीज का समर्थन किया है जब मैं छिद्र को तोड़ने और पहिया को फिर से शुरू करने से पहले। – tjameson

उत्तर

4

यदि आप git format-patch के साथ पैचिंग कर रहे हैं, तो git clone --depth <depth> और प्रक्रिया के साथ एक उथले क्लोन बनाएं। बाधाएं आप नहीं हैं, हालांकि, इस मामले में आपको शायद this answer और this answer उपयोगी लगेगा। दूसरा निष्कर्ष निकाला है कि git checkout --orphan शायद आप जो चाहते हैं उसे प्राप्त करने का सबसे अच्छा तरीका है। बेशक, आपको इसकी एक छोटी शाखा बनाने के लिए स्थानीय स्तर पर पूरी तरह से इतिहास को क्लोन करने की आवश्यकता होगी।

यदि आप साहसी महसूस कर रहे हैं, तो इसे बुरी तरह से चाहते हैं, और git format-patch के साथ पैच बनाने और उन्हें git am के साथ अन्य भंडार में लागू करने के लिए और अधिक जटिल बनाने के लिए तैयार नहीं हैं और न ही स्क्रिप्ट के लिए मुश्किल है। यह आपकी पुश प्रक्रिया में एक अतिरिक्त परत जोड़ देगा - उदा। उथले रेपो पर एक पैच बनाएं, एक पूर्ण रेपो में प्रोग्रामेटिक रूप से लागू करें, जो या तो स्थानीय या कहीं और है, बाद वाले से धक्का। समय और परेशानी शायद इसके लायक नहीं है, लेकिन यह निश्चित रूप से संभव है।

+0

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

+0

स्पष्ट करने के लिए, इतिहास काटना आसान है। उस कटा हुआ इतिहास को धक्का देना और खींचना मुश्किल है। गिट इस बारे में धारणा नहीं कर सकता है कि भंडार के सिर कहां हैं, न ही [क्या यह समझ सकता है कि आपके उथले भंडार को किस टुकड़ा लिया गया है।] (Http://stackoverflow.com/a/6900428/877115) यदि आप इसे स्क्रिप्ट करने के इच्छुक हैं , समस्या कम या ज्यादा हल हो गई है। दूसरों को एक उथले भंडार पर 'गिट प्रारूप-पैच' पास करें। 'गिट एम 'के साथ आवेदन करें। आप इसे आसानी से स्क्रिप्ट कर सकते हैं, खासकर यदि आप उत्पन्न नहीं कर रहे हैं, तो कहें, रास्ते में काम करें। – Christopher

+0

ऐसा लगता है कि मैं अपने विशेष उपयोग मामले के साथ वापस विलय कर सकता हूं। एक बार जब मैं उथले क्लोन पर पढ़ता हूं तो मैं इसे स्वीकार करूंगा। धन्यवाद! – tjameson

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