क्रिस्टोफर ने एक-प्रोजेक्ट-प्रति-रिपॉजिटरी मॉडल के नुकसान की गणना करने का बहुत अच्छा काम किया। मैं उन कुछ कारणों पर चर्चा करना चाहूंगा जिन पर आप एक बहु-रिपॉजिटरी दृष्टिकोण पर विचार कर सकते हैं। मेरे द्वारा काम किए गए कई वातावरणों में, एक बहु-रिपॉजिटरी दृष्टिकोण एक उचित समाधान रहा है, लेकिन कितने रिपॉजिटरी होने का निर्णय, और जहां कटौती करना हमेशा आसान नहीं होता है।
अपनी वर्तमान स्थिति में, मैंने दस वर्षों के इतिहास के साथ कई गॉट रिपॉजिटरी में एक बीहोम एकल-रिपॉजिटरी सीवीएस रिपॉजिटरी का माइग्रेशन किया। उस प्रारंभिक निर्णय के बाद से, रिपॉजिटरी की संख्या (अन्य टीमों के कार्यों के माध्यम से) बढ़ी है, उस बिंदु तक जहां मुझे संदेह है कि हमारे पास इससे अधिक इष्टतम है। कुछ नए लोगों ने रिपॉजिटरी को मर्ज करने का सुझाव दिया है लेकिन मैंने इसके खिलाफ तर्क दिया है। वायलैंड परियोजना का एक समान अनुभव है। एक बातचीत में मैंने हाल ही में देखा, उनके पास एक बिंदु पर, 200 से अधिक गिट रिपॉजिटरी थीं, जिसके लिए लीड ने माफी मांगी। उनकी वेबसाइट को देखते हुए, मुझे लगता है कि अब वे 5 पर हैं, जो उचित लगता है। यह मानना महत्वपूर्ण है कि रिपॉजिटरी में शामिल होना और विभाजित करना एक प्रबंधनीय कार्य है, और इसका प्रयोग (कारण के भीतर) करना ठीक है।
तो आप कई रिपॉजिटरी कब चाहते हैं?
- कुशल होने के लिए एक एकल भंडार बहुत बड़ा होगा।
- आपकी रिपॉजिटरीज़ शिथिल रूप से युग्मित, या विघटित हैं।
- एक डेवलपर को आमतौर पर केवल एक, या आपके रिपॉजिटरी के छोटे उपसमूह को विकसित करने की आवश्यकता होती है।
- आप आमतौर पर रिपॉजिटरी को स्वतंत्र रूप से विकसित करना चाहते हैं, और केवल उन्हें कभी-कभी सिंक्रनाइज़ करने की आवश्यकता होती है।
- आप अधिक प्रतिरूपकता को प्रोत्साहित करना चाहते हैं।
- अलग-अलग टीमें अलग-अलग रिपॉजिटरी पर काम करती हैं।
यदि पॉइंट 1 होल्ड है तो पॉइंट्स 2 और 3 केवल महत्वपूर्ण हैं। हमारे रिपॉजिटरी को विभाजित करके, मैंने अपने ऑफसाइट सहयोगियों द्वारा प्राप्त विलंब को काफी कम कर दिया, डिस्क की खपत कम कर दी और नेटवर्क ट्रैफ़िक में सुधार किया।
4 और 5 अधिक सूक्ष्म हैं। जब आप ग्राहक और सर्वर के पुनर्खरीद को विभाजित करते हैं, तो इससे ग्राहक और सर्वर कोड के बीच परिवर्तनों का समन्वय करना अधिक महंगा हो जाता है। यह एक सकारात्मक हो सकता है, जिसमें दोनों के बीच एक decoupled इंटरफ़ेस को प्रोत्साहित करता है।
मल्टी-रिपॉजिटरी प्रोजेक्ट्स के डाउनसाइड्स के साथ भी, इस तरह से बहुत सारे सम्मानजनक काम किए जाते हैं - वेलैंड और बूस्ट। मेरा मानना है कि सर्वोत्तम प्रथाओं के बारे में एक आम सहमति अभी तक विकसित नहीं हुई है, और कुछ निर्णय की आवश्यकता है। कई रिपॉजिटरी (git-subtree, git-submodule और अन्य) के साथ काम करने के लिए उपकरण अभी भी विकसित और प्रयोग किए जा रहे हैं। मेरी सलाह है कि प्रयोग करें और व्यावहारिक रहें।