यह एक सामान्य परिदृश्य है कि कुछ VCS प्रणाली में भंडार द्वारा रखे गए उत्पाद का कोडबेस एक ऐसे बिंदु पर विकसित होता है, जहां कोडबेस को कई उत्पादों के रूप में देखा जा सकता है। कई VCS रिपॉजिटरी में कोडबेस को विभाजित करते हुए, प्रत्येक एक उत्पाद के लिए समर्पित, कई लाभों का लाभ उठा सकता है ( नीचे ब्लोट रिपॉजिटरी मॉडल पर VCS रिपॉजिटरी प्रति उत्पाद होने के लाभ देखें)। तकनीकी पक्ष पर, कोडबेस को विभाजित करना एक आसान कदम है क्योंकि अधिकांश वीसीएस इस ऑपरेशन का समर्थन करते हैं। हालांकि विभाजन स्वचालित परीक्षण, सतत वितरण, सेवा एकीकरण या निगरानी से संबंधित इंजीनियरिंग मुद्दों को बढ़ा सकता है (विभाजन द्वारा उठाए गए मुद्दे देखें)।) इस तरह के विभाजन को करने की योजना बनाने वाले संगठनों को यह जानना आवश्यक है कि इस संक्रमण को कैसे सुचारू रूप से निष्पादित किया जा सकता है, अर्थात्, उनकी डिलीवरी और निगरानी पाइपलाइन को बाधित किए बिना। इसका पहला कदम शायद परियोजना की धारणा को बेहतर ढंग से समझना है और एक अखंड कोडक में विभाजन को कैसे चित्रित किया जाए।
इस सवालों के जवाब में, मैं देखना चाहूंगा:
एक उत्पाद क्या है की एक कार्यशील परिभाषा देने का प्रयास, जो एक मौजूदा कोडबेस में वास्तव में उत्पादों को वितरित करने के लिए व्यावहारिक मानदंड देता है।
इस कार्य की परिभाषा के अनुसार, एक योजना को विस्तृत करें जो वास्तव में विभाजन का प्रदर्शन करें। हम सरलीकृत धारणा बना सकते हैं कि कोडबेस को पूरी तरह से स्वचालित एसडीएलसी द्वारा निरंतर-एकीकरण और निरंतर-वितरण को लागू करने के द्वारा संसाधित किया जाता है । यही है, प्रत्येक शाखा को वर्तमान कोडबेस में लागू किए गए एक स्वचालित टेस्टसाइट द्वारा मान्य किया जाता है और प्रत्येक को "जादू" शाखा में मिलाया जाता है जो उत्पाद-कलाकृतियों का परीक्षण और तैनाती करता है। ( उत्पाद कलाकृतियों हैं जैसे स्रोत tarballs, प्रलेखन, द्विआधारी सॉफ्टवेयर संकुल, डोकर छवियों, एमिस, unikernels।)
इस तरह की योजना संतोषजनक है अगर यह बताती है कि इसे कैसे दरकिनार किया जाए
बंटवारे के मुद्दे
स्वचालित परीक्षण प्रक्रियाएँ पहले से मौजूद मोनोलिथिक रिपॉजिटरी और स्प्लिट रिपॉजिटरी से कैसे संबंधित हैं?
स्वचालित परिनियोजन प्रक्रियाएँ पहले से मौजूद मोनोलिथिक रिपॉजिटरी और स्प्लिट रिपॉजिटरी से कैसे संबंधित हैं?
स्वचालित तैनाती प्रक्रियाओं के लिए कोड को स्वयं कहाँ संग्रहीत किया जाता है?
कहाँ संग्रहीत बुनियादी ढांचे , निगरानी और उच्च उपलब्धता रणनीतियों रहे हैं?
यह कैसे सुनिश्चित करें कि एक डेवलपर को एक समय में केवल एक कोडबेस की आवश्यकता होती है (लेकिन अन्य कोडबेस से आर्टिफैक्ट्स का उपयोग संभव है)।
Git-bisect जैसा टूल कैसे हो सकता है
सीमांत नोट: ब्लोस रिपॉजिटरी मॉडल पर VCS रिपॉजिटरी के प्रति उत्पाद होने के लाभ
एक विशिष्ट उत्पाद के लिए कोडबेस रखने वाले कई छोटे भंडार होने के बाद "ब्लोट रिपॉजिटरी" दृष्टिकोण पर निम्नलिखित लाभ हैं:
एक ब्लोट रिपॉजिटरी के साथ एक उत्पाद के अस्थिर होने पर एक रिलीज को वापस रोल करना मुश्किल है, क्योंकि इतिहास अन्य उत्पाद इतिहास के साथ मिलाया जाता है।
ब्लोट रिपॉजिटरी के साथ, प्रोजेक्ट इतिहास की समीक्षा करना मुश्किल है या छोटे रिपॉजिटरी के साथ, हम इस जानकारी को पढ़ने की अधिक संभावना रखते हैं। (यह GCS की तरह VCS के लिए विशिष्ट हो सकता है, जहां svn के विपरीत, हम चेकआउट सबट्रीज़ नहीं कर सकते हैं!)
ब्लोट रिपॉजिटरी के साथ, जब हम विकसित होते हैं तो हमें बहुत अधिक शाखा-नृत्य करना पड़ता है। यदि हमारे पास एन रिपॉजिटरी है, तो हम एन शाखाओं पर समानांतर में काम कर सकते हैं, अगर हमारे पास केवल 1 रिपॉजिटरी है, तो हम केवल एक शाखा पर काम कर सकते हैं, या काम करने वाली प्रतियों का एक भार है, जिसे संभालना भी एक परेशानी है।
कई छोटे रिपॉजिटरी के साथ, लॉग प्रोजेक्ट का हीट मैप देते हैं। उन्हें देव टीम में ज्ञान प्रसार के छद्म के रूप में भी इस्तेमाल किया जा सकता है: अगर मैंने 3 महीने से रेपो एक्स में प्रतिबद्ध नहीं किया, तो रेपो एक्स पर काम करने वाली टीम में मुझे सौंपना अच्छा हो सकता है ताकि मैं घटनाक्रम से अवगत रहूं उस घटक में।
छोटे रिपॉजिटरी के साथ, एक घटक का स्पष्ट अवलोकन प्राप्त करना आसान है। यदि सब कुछ एक ही बड़े भंडार में जाता है, तो प्रत्येक घटक में ठोस मूर्तिकला नहीं होती है, और कोडबेस मिट्टी की बड़ी गेंद की ओर आसानी से बह सकता है ।
छोटे रिपॉजिटरी हमें घटकों के बीच इंटरफेस पर काम करने के लिए मजबूर करते हैं। लेकिन जब से हम एक अच्छा कैप्युलेशन करना चाहते हैं, यह एक ऐसा काम है जो हमें वैसे भी करना चाहिए, इसलिए मैं इसे छोटे-छोटे शोधपत्रों के लिए एक लाभ के रूप में गिना जाऊंगा।
कई छोटे रिपॉजिटरी के साथ, कई उत्पाद मालिकों के लिए यह आसान है।
कई छोटे रिपॉजिटरी के साथ, सरल कोड मानकों को करना आसान है जो एक पूर्ण रिपॉजिटरी के लिए प्रासंगिक हैं और जो स्वचालित रूप से सत्यापित हो सकते हैं।