2012-01-26 13 views
6

के विभिन्न संस्करणों के लिए गिट वर्कफ़्लो हमारे पास निम्न सेटअप है: तीन ऐप्स जो एक दूसरे के समान होते हैं जो एक ढांचे में निकाले गए सामान्य कोड के साथ होते हैं। प्रत्येक ऐप को अपने गिट रिपोजिटरी में प्रबंधित किया जाता है और इसमें गिट सबमिशन के रूप में ढांचा शामिल होता है।फ्रेमवर्क

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

फ्रेमवर्क शाखाओं

  • मास्टर (एप्लिकेशन एक द्वारा प्रयुक्त)
  • AppB
  • APPC

जब एक नई सुविधा AppB उस ढांचे इन परिवर्तनों थे में परिवर्तन की आवश्यकता में शुरू की है शाखा एपीबी के लिए बनाया गया। यदि इन परिवर्तनों को बाद में ऐप ए में आवश्यक था, तो शाखा एपीबी मास्टर में विलय कर दिया गया था। इसका मतलब है कि एपीबी में सभी बदलावों को मास्टर में विलय करना था।

इस प्रणाली में काम किया लेकिन कुछ खामियों

  • था एक और मतलब के लिए एक शाखा से एक सुविधा विलय हम सभी परिवर्तनों को मर्ज करने के लिए किया था
  • ट्रैक क्या पहले से ही विलय कर दिया गया था या क्या करने जा रहा है ढीला करने के लिए आसान जब एक और
  • परिवर्तन तोड़ने अंकन में एक शाखा विलय संदेश, जो पिछले बिंदु और भी अधिक महत्वपूर्ण बना दिया

हम घन हैं प्रतिबद्ध का उपयोग किया गया था विलय हो एक नए वर्कफ़्लो की खोज कर रहे हैं। मैं प्रत्येक अनुप्रयोग एक शाखा और एक मास्टर शाखा है कि सभी परिवर्तन शामिल हैं निम्नलिखित शाखाओं

  • मास्टर
  • अप्पा
  • AppB
  • APPC

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

मैं इस

  • मैं कैसे कई शाखाओं पर एक फीचर शाखा मर्ज कर सकते हैं और केवल परिवर्तन है कि शाखा में हुआ विलय के साथ निम्न समस्याओं को देखते हैं। मुझे पता है कि "गिट रिबेज ..." लेकिन मुझे पूरा यकीन नहीं है कि मैं इस आदेश का कई बार उपयोग कर सकता हूं।
  • क्या मुझे कई शाखाओं में विलय सुविधाओं के लिए गिट चेरी-पिक का उपयोग करना चाहिए? मैं ऐसा नहीं करूँगा, क्योंकि मुझे लगता है कि यह फीचर शाखा
  • में किए गए सभी परिवर्तनों का चयन न करने पर त्रुटि प्रवण होगी, इस ट्रैक को ट्रैक करने के लिए कि कौन सी सुविधा (शाखा) लागू की गई थी। क्या मैं शाखा - नो-मर्ज का उपयोग कर सकता हूं या केवल तभी काम करता हूं जब शाखाएं समान पूर्वज हों?

क्या मेरा उद्देश्य यह तरीका पूरा करने का सबसे अच्छा तरीका है या क्या मुझे अपनी रणनीति पर पूरी तरह से पुनर्विचार करना चाहिए?

+2

हाय रजत, आप कार्यप्रवाह आप गोद लेने और यह कैसे काम कर रहा है समाप्त हो गया के साथ इस सवाल अपडेट कर लें कर सकते हैं। मुझे एक ही स्थिति का सामना करना पड़ रहा है, और यह भी गलत हो गया है। इसलिए मैंने जो किया है उसमें दिलचस्पी है। – BlinkyBill

उत्तर

0

के रूप में, दो व्यावहारिक समाधान जब कई शाखाओं के लिए प्रतिबद्ध लागू करने (जो आप अपने "सुविधा शाखाओं" विकल्प के साथ क्या करेंगे) "Git & Working on multiple branches" में समझाने हैं:

  • मर्ज (जो आप की अनुमति चाहिए उस फीचर शाखा का पुन: उपयोग करने के लिए, क्योंकि यह ट्रैक रखेगा कि पहले से ही एक विशिष्ट बैंच में क्या विलय हो चुका है): rebase --interactive आपके लिए काम करने के लिए ऑर्डर करने के लिए हो सकता है, पहले जिन्हें आप मर्ज करना चाहते हैं, और फिर जिनके लिए आप अभी तक तैयार नहीं हैं, वे मर्ज करने के लिए तैयार नहीं हैं।
  • cherry-picking (और यह अब supports a range of commits), लेकिन मैं हमेशा have been wary of cherry-picking
+0

rebase --interactive इसके लिए एक अच्छा उपकरण प्रतीत होता है। क्या इसका कोई प्रभाव नहीं है जब मुझे इसका उपयोग करने के बारे में पता होना चाहिए? – sliver

+0

@ स्लीवर: केवल इतना है कि आपको अन्य लोगों के साथ पहले से साझा की गई शाखा (किसी अन्य रेपो पर धक्का) नहीं देनी चाहिए (जैसा कि http://stackoverflow.com/a/2825924/6309 में विस्तृत है)। आपके मामले में, यह कोई मुद्दा नहीं होना चाहिए। – VonC