Git का उपयोग करके वेब एप्लिकेशन के कई संस्करणों का प्रबंधन करना


12

हमारे पास ऐप्स का एक परिवार है, सभी का आधार एक ही है। अब तक मैं इस आधार को विकसित कर रहा हूं, और Git वर्कफ़्लो बहुत सरल था:

  • विकास developशाखा में किया जाता है
  • नई सुविधाएँ name-of-the-featureशाखा में विकसित की जाती हैं
  • release-**शाखा में राहतें बनाई जाती हैं

अब तक, परिवार के हर ऐप के लिए कोड समान था। मान लीजिए कि उनके द्वारा साझा किया गया आधार अब पूरा हो गया है, और अब से कोड हर ऐप के लिए अलग होगा।

मुझे यकीन नहीं है कि मुझे git और इस कई ऐप से कैसे निपटना चाहिए जिनके पास एक ही आधार है।

  • क्या उनमें से प्रत्येक के पास अपना स्वयं का गिट प्रोजेक्ट होना चाहिए ?
  • क्या उन्हें एक ही परियोजना पर होना चाहिए, लेकिन हर एक की अपनी शाखा में ?

मुद्दा यह है: यदि मैंने उन्हें अलग-अलग परियोजनाओं पर रखा है, तो ऐप के आधार में किए गए प्रत्येक संशोधन को मुझे प्रत्येक ऐप में दोहराया जाएगा। मैं गिट से बहुत परिचित नहीं हूं , लेकिन अगर मैं प्रत्येक परियोजना को एक शाखा में संग्रहीत करता हूं, तो प्रत्येक ऐप के साथ आधार संशोधन को मर्ज करना संभव होगा?

क्या किसी ने इस तरह की स्थिति का अनुभव किया है? मुझे यकीन नहीं है कि कैसे आगे बढ़ना है।

धन्यवाद!

संपादित जब मैंने कहा संस्करण मैं संस्करण संख्याओं की तरह मतलब नहीं था। वे वास्तव में अलग-अलग ऐप हैं जो एक ही आधार को साझा करते हैं।

जवाबों:


7

आधार ऐप को खुद के रिपॉजिटरी में छोड़ दें, और नए प्रोजेक्ट बनाएं जो उस रिपॉजिटरी से आपके द्वारा संकलित किए गए जार पर निर्भर करते हैं।

कई शाखाओं के लिए गिट शाखाएं नहीं हैं। Git पसंद करता है कि आप प्रत्येक परियोजना या परियोजनाओं के संबंधित परिवार के लिए एक भंडार का उपयोग करें। शाखाएँ वहाँ हैं ताकि आप अलगाव में सुविधाओं को विकसित कर सकें, इसलिए नहीं कि आप भंडार को छोड़कर पूरी तरह से नई परियोजना बना सकते हैं।

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


अधिकांश कोड जो साझा किए गए हैं, वे GWT कोड (विचार, सेवाएं, आदि) हैं। क्या इसे जार लाइब्रेरी में निकालना संभव है? या यह केवल सर्वर-साइड जावा कोड के लिए संभव है?
जोहो डैनियल

देखें तत्वों को निकाला जा सकता है, लेकिन संभवतः एक जार तक नहीं। उदाहरण के लिए, जावास्क्रिप्ट को हर पृष्ठ से एक एकल फ़ाइल में निकाला जा सकता है जिसे तब प्रत्येक परियोजना में शामिल किया जा सकता है। JSP कॉमन कोड को JSP टैग में निकाला जाना चाहिए। आपको संभवतः पूरे पृष्ठ खींचने की आवश्यकता नहीं है, लेकिन मुझे आपकी परियोजना का पता नहीं है, इसलिए मैं गलत हो सकता हूं।
माइकल के

आप इस दृष्टिकोण के बारे में क्या सोचते हैं: stackoverflow.com/a/2540471/2615737 ? यह उचित है ...
फ्रांसिस्को कॉर्लेस मोरेल्स

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

6

यदि ऐप्स स्वयं आधार को संशोधित नहीं करेंगे, तो आधार को अपने स्वयं के भंडार में छोड़ने पर विचार करें। फिर प्रत्येक अलग-अलग ऐप के लिए एक नया रिपॉजिटरी बनाएं और एक बेस सबमॉड्यूल के रूप में आधार जोड़ें ।

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