2011-04-24 11 views
5

हालांकि मैं अब कुछ समय के लिए गिट का उपयोग कर रहा हूं, फिर भी मैं खुद को एक n00b मानता हूं, इसलिए कृपया मुझ पर बहुत कठोर न हों।परीक्षण और उत्पादन के उदाहरणों के लिए अनुशंसित गिट वर्कफ़्लो

मैं एक "कॉर्पोरेट" मेनफ्रेम सिस्टम को दो गैर-समान प्रतियों के रूप में बनाए रख रहा हूं। चलो उन्हें टेस्ट और प्रोडक्शन कहते हैं। मेनफ्रेम में कुछ भी नहीं है जो मैं (या, शायद, आप में से कोई भी) संस्करण नियंत्रण प्रणाली मानता है, इसलिए मैं डेस्कटॉप पर गिट का उपयोग कर रहा हूं ताकि मुझे संस्करण नियंत्रण प्रदान किया जा सके।

  • डेस्कटॉप और मेनफ्रेम एफ़टीपी के साथ "सिंक किए गए" कर रहे हैं: यहाँ मेरे वर्तमान कार्यप्रवाह की मुख्य विशेषताएं हैं। अंत में, मेनफ्रेम या पीसी पर लिखा गया सभी विकास कार्य, एक गिट शाखा में पीसी पर समाप्त होता है।

  • मैं ऐसे हडसन

  • "आधुनिक" तैनाती प्रौद्योगिकी के किसी भी प्रकार के लिए पहुँच नहीं मैं दो मुख्य शाखाएं हैं, टेस्ट और उत्पादन कहा जाता है। उत्पाद की विरासत (विरासत) संरचना के कारण, टेस्ट और प्रोड उदाहरणों के बीच कोड में कई अंतर हैं। उदाहरण के लिए, सभी डिस्प्ले पैनलों को स्पष्ट रूप से यह पहचानने की आवश्यकता है कि यह टेस्ट या प्रोड है, लेकिन इसे एक ही बिंदु पर कॉन्फ़िगर करने का कोई तरीका नहीं है।

  • मैं आम तौर पर विशिष्ट विकास उपप्रोजेक्ट्स के लिए अन्य शाखाओं का विज्ञापन करता हूं।

  • कई कार्यों के साथ टेस्ट शाखा पर सामान्य विकास किया जाता है। तैयार होने पर, ये प्रोड पर चेरी-चुने जाते हैं, जो एक परिवर्तन संख्या के साथ टैग किए जाते हैं, और अनुमोदित होने पर अपलोड किए जाते हैं।

  • प्रोजेक्ट शाखा पर सौभाग्य से काम, सौभाग्य से दुर्लभ, टेस्ट पर चेरी-चुने गए हैं।

  • चेरी पिकिंग, बहुत कभी कभी, एक मैनुअल मर्ज की आवश्यकता है।

मुझे इस वर्कफ़्लो को बेहतर बनाना चाहिए। वर्तमान में मेरी भंडार दो शाखाओं पर समानांतर समान परिवर्तनों से भरा है।

मुझे लगता है कि मैं इसे इस तरीके से करना पसंद करेंगे (टेस्ट के लिए -> प्रॉड):

  • एक बार विकास के लिए तैयार है, प्रॉड

    की प्रमुख
  • संक्षिप्त करें इस पर एक नई शाखा का सृजन विकास के सेट उत्पादन में पर नई शाखा पर एक परिवर्तन में बदल जाता है

  • मर्ज इस नई शाखा। ध्यान रखें कि उनके पूर्वज से पहले परिवर्तन है कि प्रॉड

    से

ऐसा लगता है कि git rebase -i काम कर सकता है टेस्ट अलग करना है, लेकिन मैं कबूल git rebase है कि मेरे पोंस asinorum, और किसी भी तरह मैं गड़बड़ करने के लिए अपने पेड़ पर कई बार प्रबंधित किया है।

तो मेरे सवालों का ये हैं:

  1. एक बेहतर तरीका सुझाव दें, उत्पाद की शर्तों के अंतर्गत।

  2. यदि मेरा पसंदीदा दृष्टिकोण व्यवहार्य है, तो क्या कोई git rebase -i के लिए सही पैरामीटर सुझा सकता है?

उत्तर

7

टेस्ट और प्रोड के बीच मतभेदों के संबंध में, जांचें कि क्या आप एक पर्यावरण या दूसरे में हैं या नहीं।

इससे प्लेटफॉर्म-विशिष्ट सामग्री वाली फ़ाइलों के लिए filter driver के साथ चेकआउट पर संशोधित किया जा सकता है, जो धुंधली स्क्रिप्ट के माध्यम से होता है।

filter driver

इस तरह, आप बस कोड की लगभग समान सेट करने के लिए अलग करने के लिए शाखाओं बनाए रखने के लिए नहीं होगा।

+0

यह एक बहुत ही रोचक विचार है जिसे मैंने नहीं माना था और इसके बारे में पता नहीं था। मैं यहां जाने के पहले जा रहा हूं और इसे अपना समय लेने से पहले इसे पढ़ूंगा। धन्यवाद। –

0

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

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

मुझे लगता है कि आपके वर्कफ़्लो में इन दो चीजों को बदलकर विकास और उत्पादन शाखा को प्रबंधित करने का बड़ा सवाल अधिक स्पष्ट होगा।

+0

मुझे यकीन नहीं है कि मैं टेस्ट <-> प्रोड मतभेद खोए बिना विलय कैसे कर सकता हूं। क्या आप स्पष्टीकरण दे सकते हैं? मैं केवल तैनाती से पहले प्रोड में सुरक्षित रूप से विलय कर सकता हूं, और यह तय नहीं करता कि यह कब किया जाता है, हालांकि मेरे पास पूर्व-तैनाती शाखा हो सकती है। मुझे लगता है कि मेरी प्रतिबद्धता आपके सुझाव से कहीं अधिक बार होती है; यही कारण है कि मैं प्रत्येक तैनाती के लिए बहुत सी चेरी-पिक्स से बचना चाहता हूं। वर्तमान में मेरे पास बहुत अधिक इतिहास है: विकास के विवरण व्यक्तिगत रूप से प्रोड शाखा में डुप्लिकेट किए जाते हैं, बजाय सिग्नल, तैनाती, परिवर्तन के बजाय। –

+0

बिंदु टेस्ट और प्रोड के बीच अंतर को कम करना है। मैं तुम्हारी आखिरी वाक्य नहीं समझता; क्या आपका मतलब है कि आप परीक्षण से प्रोड में विलय करने के लिए विलय कर रहे हैं? – raylu

संबंधित मुद्दे