हमारे सॉफ़्टवेयर उत्पाद लाइन को कई सॉफ़्टवेयर संस्करणों को एक साथ विकसित करने और बनाए रखने की आवश्यकता है। हम रिश्तेदार गिट न्यूबीज हैं और हाल ही में Driessen's branching model का लाभ उठाने के लिए गिट फ्लो को अपनाया है। हमारे पास कुछ समर्पित डेवलपर्स के साथ एक बहुत छोटी सॉफ्टवेयर टीम है (हम सभी कई टोपी पहनते हैं) और कोई "एकीकरण गुरु" नहीं है।गिट गैर-गुरु के लिए एकाधिक रिलीज लाइनों और गिट-फ्लो पर सलाह
अधिकतर खोज ने गिट और गिट फ्लो को हमारी आवश्यकताओं के अनुरूप अनुकूलित करने के बारे में थोड़ी सी विशिष्ट सलाह दी है। क्या हुआ है कि गिट फ्लो समवर्ती रूप से कई संस्करणों का समर्थन करने के लिए उपयुक्त नहीं है। एक related discussion on SO में अलग-अलग संस्करणों के इतिहास को ट्रैक करने के लिए अलग-अलग शाखा नामों का उपयोग करने के लिए उपयोग किए जाने वाले उत्तर हैं। यह, और संबंधित रणनीतियों, गिट फ्लो को तब तक समाप्त करती है जब तक यह संशोधित न हो; हमारी टीम की सीमाओं को एक कारण के लिए देखें कि यह हमारे लिए व्यावहारिक क्यों नहीं है।
मुख्य प्रश्न यह है कि कई रिलीज लाइनों का समर्थन करते समय ड्रिसेन के ब्रांचिंग मॉडल को जितनी जल्दी हो सके लागू करने के लिए दूसरों को एक अच्छा दृष्टिकोण मिल गया है?
अद्यतन:
अधिक लक्षित खोज और कुछ ही विकल्प पर आंतरिक विचार-विमर्श निम्नलिखित समाधान है कि हम कार्यान्वित कर रहे हैं की ओर जाता है के साथ नीचे (विशेष रूप से @Rasmus ') जवाब आसवन, और जो मैं एक दृष्टिकोण के रूप में प्रस्तुत करते हैं कि हो सकता है समान स्थितियों के तहत समान टीमों के लिए प्रासंगिक हो।
हम गिट फ्लो का उपयोग जारी नहीं रखेंगे। इसके बजाय, हम Driessen के मॉडल प्रत्येक व्यक्ति रिहाई लाइन के लिए एक रेपो में उसके इच्छित रिहाई तार के साथ प्रत्येक शाखा नाम prefacing द्वारा, उदा लागू होगी .:
r1.5/develop
एक परियोजना के सभी संस्करणों Git भंडार में शामिल हैं। एक नए प्रोजेक्ट संस्करण को शुरू करने में रिलीज स्ट्रिंग (उदा। r1.6/develop
) और हमारे मामले में r1.6/release
; master
एकल वर्तमान अच्छे बिल्ड करने योग्य राज्य के निहितार्थ के साथ नई दीर्घकालिक शाखाओं का एक छोटा सेट बनाने का होता है।
हम एक सर्वर है कि स्थानीय रेपो remote
लिंक के माध्यम से कोड साझा करने के लिए मुख्य एवेन्यू हो जाएगा पर परियोजना प्रति एक केंद्रीय सार्वजनिक भंडार की स्थापना। इस भंडार के लिए एक धक्का कोड को इंगित करता है जो दूसरों द्वारा उपभोग करने के लिए तैयार है। RX.Y/develop
को विलय करना और फिर RX.Y/release
शाखा को धक्का देना कोड को इंगित करता है जो रिलीज़ के लिए है। feature
, hotfix
, et। अल। शाखाओं को समान रूप से संभाला जाता है। दी गई रिलीज लाइन के लिए शाखा विलय/प्रतिबद्ध इतिहास स्वच्छ और समझदार है। हम नहीं चाहते हैं कि ठेठ गिट वितरित रेपो रणनीति को इस तरह के रिपोज़ विलय की जटिलता से बचने के पक्ष में वितरित करें, समय के साथ, संरचना में अलग होने की संभावना है।
कुछ गिट जीयूआई (उदाहरण के लिए स्रोत ट्री) में इस शाखा संरचना को श्रेणीबद्ध के रूप में पहचाना और प्रदर्शित किया जाता है, जो शाखा संरचना से किसी परियोजना के शीर्ष-स्तरीय इतिहास को समझने में मदद करता है।
किसी भी उत्तर को अप-वोट करने के लिए क्षमा नहीं; एसओ पर मेरी प्रतिष्ठा अभी तक ऐसा करने की न्यूनतम आवश्यकता नहीं है।
यह सवाल विषय से हटकर हो सकता है क्योंकि यह सॉफ्टवेयर विकास और संशोधन नियंत्रण सर्वोत्तम तरीकों के बारे, नहीं जैसे प्रोग्रामिंग के बारे में है प्रकट होता है। –
@ हंसशेन: मैं असहमत हूं। सॉफ़्टवेयर डिज़ाइन पैटर्न की तरह सॉफ़्टवेयर सर्वोत्तम प्रथाओं प्रोग्रामिंग विषय हैं। मैंने इस विषय की खोज की और इसे स्टैक ओवरफ्लो में पाया, जहां मैंने इसकी अपेक्षा की थी। – Alkaline