संपादित करें: कुछ इसी तरह के सवालों के विपरीत जैसे कि मल्टी-जीबी एसवीएन रेपो को जीआईटी या /programming/540535/managing-large-binary-files-with-git पर ले जाना मेरे परिदृश्य में ऐसे सबप्रोजेक्ट शामिल नहीं हैं जो आसानी से गिट सबमॉडल में परिवर्तित किया जा सकता है, न ही कुछ बहुत बड़ी बाइनरी फाइलें जो गिट-एनेक्स के लिए अच्छी तरह से अनुकूल हैं। यह एक एकल रिपॉजिटरी है जहां बायनेरिज़ टेस्ट सूट होते हैं जो एक ही संशोधन के मुख्य स्रोत कोड से कसकर जोड़े जाते हैं, जैसे कि वे ग्राफिक्स जैसे समय संपत्ति का संकलन करते थे।
मैं svn से एक पुराने माध्यम / बड़े आकार (50 उपयोगकर्ता, 60k संशोधन, 80Gb इतिहास, 2Gb कार्य प्रतिलिपि) कोड रिपॉजिटरी को स्विच करने की जांच कर रहा हूं। जैसे-जैसे उपयोगकर्ताओं की संख्या बढ़ी है, ट्रंक में बहुत अधिक मंथन हुआ है, और कई बार कोड की समीक्षा करने के लिए कई कमेंट्स पर विशेषताएं फैल जाती हैं। इसके अलावा शाखा के बिना "गेट" खराब कोड का कोई तरीका नहीं है, केवल ट्रंक के लिए प्रतिबद्ध होने के बाद ही समीक्षा की जा सकती है । मैं विकल्पों की जांच कर रहा हूं। मैं उम्मीद कर रहा था कि हम पकड़ में आ सकते हैं, लेकिन मुझे कुछ समस्याएं हो रही हैं।
जहां तक गिट जाता है, वर्तमान रेपो के साथ समस्या आकार की है। वहाँ बहुत पुराना cruft है, और इसे साफ करने के साथ --filter- शाखा के साथ जब गिट में परिवर्तित किया जाता है, तो यह लगभग 5-10GB तक, परिमाण के क्रम से आकार में कटौती कर सकता है। यह अभी भी बहुत बड़ा है। बड़े रिपॉजिटरी आकार का सबसे बड़ा कारण यह है कि परीक्षणों के लिए बहुत सारे बाइनरी दस्तावेज़ हैं। ये फाइलें .5mb और 30mb के बीच बदलती हैं, और सैकड़ों हैं। उनमें भी काफी बदलाव हैं। मैंने सबमॉड्यूल्स, गिट-एनेक्स आदि को देखा है, लेकिन एक सबमॉड्यूल में परीक्षण करना गलत लगता है, क्योंकि इसमें कई फाइलों के लिए एनेक्स होता है जिसके लिए आप पूरा इतिहास चाहते हैं।
इसलिए वितरित प्रकृति की प्रकृति वास्तव में मुझे इसे अपनाने से रोक रही है। मैं वास्तव में वितरित के बारे में परवाह नहीं करता, मैं सिर्फ सस्ते ब्रांचिंग और शक्तिशाली विलय की विशेषताएं चाहता हूं। जैसे मुझे लगता है कि 99.9% git उपयोगकर्ता करते हैं, हम एक धन्य, नंगे केंद्रीय भंडार का उपयोग करेंगे।
मुझे यकीन नहीं है कि मैं समझता हूं कि प्रत्येक उपयोगकर्ता को git का उपयोग करते समय एक पूर्ण स्थानीय इतिहास क्यों होना चाहिए? यदि वर्कफ़्लो विकेंद्रीकृत नहीं है, तो वह डेटा उपयोगकर्ताओं के डिस्क पर क्या कर रहा है? मुझे पता है कि गिट के हाल के संस्करणों में आप केवल हाल के इतिहास के साथ एक उथले क्लोन का उपयोग कर सकते हैं। मेरा सवाल है: क्या यह पूरी टीम के लिए ऑपरेशन के मानक मोड के रूप में ऐसा करना व्यवहार्य है? जीआईटी को हमेशा उथले होने के लिए कॉन्फ़िगर किया जा सकता है ताकि आपके पास केवल एक पूरी तरह से इतिहास हो सके, लेकिन डिफ़ॉल्ट रूप से उपयोगकर्ताओं के पास केवल 1000 इतिहास हैं? पाठ्यक्रम का विकल्प सिर्फ 1000 रीव्स को जिट में बदलना होगा, और पुरातत्व के लिए svn रेपो को रखना होगा। इस परिदृश्य में, हालांकि, परीक्षण के दस्तावेजों के लिए कई हजार संशोधनों के बाद हम फिर से उसी समस्या का सामना करेंगे।
- बड़ी है कि आप कई द्विआधारी फ़ाइलों से युक्त रेपोस साथ Git का उपयोग कर के लिए एक अच्छा सर्वोत्तम तरीका क्या है करते हैं के लिए इतिहास करना चाहते हैं? अधिकांश सर्वोत्तम प्रथाओं और ट्यूटोरियल इस मामले से बचने के लिए लगते हैं। वे कुछ विशाल बायनेरिज़ की समस्या को हल करते हैं, या पूरी तरह से बायनेरिज़ को छोड़ने का प्रस्ताव करते हैं।
- उथले क्लोनिंग ऑपरेशन के एक सामान्य मोड के रूप में प्रयोग करने योग्य है या यह "हैक" है?
- क्या सबमॉड्यूल्स का उपयोग कोड के लिए किया जा सकता है जहां आपके पास मुख्य स्रोत संशोधन और सबमॉड्यूल संशोधन (जैसे संकलन समय बाइनरी निर्भरता, या एक यूनिट टेस्ट सूट) के बीच एक तंग निर्भरता है?
- गेट रिपॉजिटरी (परिसर में) के लिए "बहुत बड़ा" कितना बड़ा है? अगर हम इसे 4GB तक ले सकें तो क्या हमें स्विच करने से बचना चाहिए? 2GB?