एक मोनोरपो के कुछ हिस्सों को साझा करना


12

वर्तमान में हमारे पास एक जटिल और अकुशल निर्माण प्रणाली है जिसमें कई SVN और Git repos (लगभग 50% प्रत्येक) शामिल हैं, जिनमें से एक git सबमॉडल्स रेपो है। हमारे पास होममेड स्क्रिप्ट्स भी हैं जो कमोबेश पूरी चीज़ों का प्रबंधन करती हैं।
हमारे (बंद-स्रोत) कोडबेस का एक प्रमुख बिंदु यह है कि इसे कसकर युग्मित किया जाता है, और प्रत्येक परियोजना को एक ही समय में एक ही संस्करण के तहत जारी किया जाता है।

हम इसे एक सरल प्रणाली और एक वीसीएस पर माइग्रेट करना चाहते हैं, और कई विकल्पों पर विचार कर रहे हैं, जिनमें शामिल हैं: गिट सबमॉड्यूल, गूगल रेपो और मोनोरेपोज़। अंतिम VCS को अभी तक परिभाषित नहीं किया गया है (इसे चुनने वाले विकल्पों को छोड़कर), और svn, git या यहां तक ​​कि कुछ और भी हो सकता है अगर यह हमारी स्थिति को बेहतर रूप से फिट करेगा।

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

क्या वीसीएस प्रणाली में ऐसा विशेषाधिकार प्रबंधन प्रणाली मौजूद है?
या इस मुद्दे को कम करने का कोई तरीका है?


क्या आप टीम फाउंडेशन सर्वर या सेवा पर विचार करेंगे? इसमें Git के लिए समर्थन है और इसमें कुछ अच्छे वर्कफ़्लो और कंटीन्यूअस इंटीग्रेशन कैपेबिलिटीज़ शामिल हैं
hanzolo

वास्तव में आप किस मोनोरो कार्यान्वयन पर विचार कर रहे हैं?
दान कॉर्निलेस्कु

जवाबों:


3

आपके विवरण से, मुझे लगता है कि आपके पास यहां कुछ विकल्प हैं:

  1. गिट सबमॉडल्स का उपयोग करें - गीथहब (या कुछ और) जैसी सेवा के साथ, आप प्रति-परियोजना अनुमतियों का प्रबंधन कर सकते हैं और अपनी तैनाती की प्रक्रिया को समाप्त कर सकते हैं। हालांकि, मैंने सुना है कि गिट सबमॉड्यूल समय के साथ एक बहुत बड़ा दर्द हो रहा है। अपने git सबमॉड्यूल को साफ़ करने / पुन: व्यवस्थित करने के लिए स्वचालित स्क्रिप्ट यहाँ मदद कर सकती है।
  2. स्वतंत्र सेवाओं में अपने रेपो को तोड़ो। यह आपको समवर्ती रूप से विकसित करने की अनुमति देता है, लेकिन एक बड़ी मात्रा में दर्द का भी परिचय देता है क्योंकि आपको सेवा की खोज, कई सेवाओं की तैनाती, विकास वातावरण, निरंतर एकीकरण / तैनाती, और अन्य सभी छोटी खुशियों के बारे में सोचना शुरू करना चाहिए जो एक प्रबंधन से आते हैं। माइक्रोसिस्टवर्क वास्तुकला।
  3. एक औपचारिक पैकेज प्रबंधन प्रणाली का उपयोग करें जैसे कि पायथन के लिए पाइप, Node.js के लिए npm.js, जावा के लिए मावेन, इत्यादि। कोड के उन टुकड़ों को तैनात करें जिनकी आपको रिपॉजिटरी में आवश्यकता है और उन्हें अपने मुख्य रेपो में आवश्यकतानुसार उपभोग करें, जिससे आपको क्षमता मिलनी चाहिए। उन्हें संस्करण के लिए। आपके मॉड्यूल और आपके मुख्य रेपो के बीच युग्मन के आधार पर, आप वास्तव में निचले स्तर के मॉड्यूल को स्वतंत्र रूप से निकालने, चलाने या परीक्षण करने में सक्षम नहीं हो सकते हैं। यदि आप कर सकते हैं , हालांकि, यह एक बहुत अच्छा तरीका है कि कई रिपॉजिटरी के साथ अच्छी तरह से जैल करें, जबकि अभी भी अपने पैकेज को दूरस्थ रिपॉजिटरी से इंस्टॉल करके अपने पैकेज को एकीकृत करने में सक्षम हैं।

दुर्भाग्य से इनमें से कोई भी विकल्प सही नहीं है, लेकिन वे सभी आपके कोडबेस की स्थिति के आधार पर मान्य हैं। विकल्प 3 की तरह आपका विवरण यहां सबसे अच्छा काम कर सकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.