9

अधिकांश सीआई सेवाएं उथले क्लोन को एक भंडार प्रदान करने का एक तरीका प्रदान करती हैं।ट्रेविस और अन्य सीआई सेवाओं पर उथले क्लोनिंग के नुकसान?

git: 
    depth: 1 

या AppVeyor पर: उदाहरण के लिए, ट्रैविस पर

clone_depth: 1 
or 
shallow_clone: true 

इस के बाद से आप पूरे भंडार क्लोन करने के लिए नहीं है, गति के स्पष्ट लाभ है।

क्या सीआई सेवाओं पर उथले क्लोनिंग के लिए कोई नुकसान है? क्या कोई ऐसी स्थिति है जहां एक उथले क्लोन सीआई निर्माण को विफल कर देगा? अन्यथा, इन सीआई सेवाओं के लिए डिफ़ॉल्ट सेटिंग क्लॉइंग क्यों नहीं किया जा रहा है?

उत्तर

8

दो कारण हैं कि ऐसा आमतौर पर क्यों नहीं होता है।

सबसे पहले, एक उथले क्लोन का हैश आपके पास भंडार में मौजूद किसी भी संस्करण से भिन्न होगा। नतीजतन, किसी भी विशेष परिणाम के लिए किए गए निर्माण को ट्रैक करना संभव नहीं होगा।

यदि आपके पास कोई विवरण नहीं है तो सबसे अधिक गिट सर्वर में अनुकूलित 'everything.pack' भेजने की क्षमता है। अन्यथा सर्वर को एक कस्टम प्रतिबद्ध पैक प्रदान करना होगा जिसमें आपको भेजने के लिए केवल आपकी उथली प्रतिलिपि होगी। इसलिए यद्यपि तार में संचारित अधिक डेटा हो सकता है, लेकिन वास्तव में सर्वर पर अधिक काम हो सकता है।

अंत में बहुत सारे सीआई बिल्ड कुछ प्रकार के टैग ऑपरेशन करेंगे और इसे भंडार में अपलोड करेंगे, और आप व्यावहारिक रूप से उथले क्लोन को टैग नहीं कर सकते हैं (बिंदु 1 देखें)।

2

AlBlue के जवाब देने के लिए जोड़ा जा रहा है:

एक और समस्या यह है कि क्लोन गहराई सेटिंग भी Git submodule के लिए प्रयोग किया जाता है।

गिट सबमिशन, ट्रैविस इत्यादि का उपयोग करने वाली परियोजनाओं में मास्टर से शुरू होने वाले सबमिशन रेपो को क्लोन कर दिया जाएगा, और फिर विशिष्ट संशोधन देखें।

अगर हम सबमिशन में इंगित कर रहे हैं तो वर्तमान मास्टर के एन काम के भीतर नहीं है (जहां एन गहराई सेटिंग है), तो यह चेकआउट में विफल हो जाएगा।

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