mercurial - समझ - स्टेप्स ऑफ़ मेल मर्ज




क्या मैं उत्पादन सर्वर पर मेरी Mercurial शाखा को अद्यतन करने के लिए हर बार मर्ज करना और प्रतिबद्ध करना चाहिए? (2)

मैं हाल के प्रोजेक्ट में मर्क्यूरिअल का उपयोग कर रहा हूं। वेब सर्वर पर, जहां मैं प्रोजेक्ट की तैनाती कर रहा हूं मुझे उत्पादन सेटिंग्स के साथ थोड़ा अलग कॉन्फ़िग फाइल है I समस्या यह है कि जब मैं pull और update हूं, मुझे अक्सर merge करना merge और साथ ही साथ करना भी होता है।

क्या यह सही कार्यप्रवाह है? यह अजीब लगता है कि अपडेट जारी रखने में सक्षम होने के लिए मुझे परिवर्तनों को करना है, मुझे लगा कि एक मर्ज उन्हें मेरी प्रोडक्शन ब्रांच में एकीकृत कर लेता है और हर बार मैं अपडेट करता हूं। क्या यह एक वितरित संस्करण नियंत्रण प्रतिमान है जो मैं अभी तक उपयोग नहीं कर रहा हूं?


एक विकल्प सर्वर-विशिष्ट तैनाती सेटिंग्स संस्करण नियंत्रण भंडार से पूरी तरह से रखने के लिए है

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

उदाहरण के लिए, जब मैं एक Django अनुप्रयोग पर काम करता हूं तो मैं settings.py फ़ाइल में जांच करता हूं जिसमें शामिल है:

  • सभी सेटिंग्स जो सर्वर (साइट का नाम, स्थापित Django apps, आदि) के बीच भिन्न नहीं होंगे
  • स्थानीय विकास के लिए "सर्वर-विशिष्ट" सेटिंग (डेटाबेस स्थान, आदि)
  • अंत में from deploy import * की रेखा।

from deploy import * पंक्ति से, यदि कोई मौजूद है तो deploy.py फ़ाइल में सभी आइटमों में खींचती है। एक परीक्षण / मंच / उत्पादन सर्वर पर मैं इस फाइल को बनाऊँगा और सर्वर-विशिष्ट सेटिंग्स को अंदर रखूँगा। चूंकि यह settings.py के अंत में होती है, ये मुख्य सेटिंग्स फ़ाइल में किसी भी स्थानीय-विकास-विशिष्ट सेटिंग को ओवरराइट करेंगे।

इसे इस तरह से करने का मतलब है कि स्थानीय रूप से चलाने और विकसित करने के लिए आवश्यक सभी चीजों को संस्करण नियंत्रण में जांच की जाती है, लेकिन कोई भी सर्वर-विशिष्ट और / या संवेदनशील जानकारी (जैसे पासवर्ड) की जांच नहीं की जाती है (और इसलिए कभी भी विलय की आवश्यकता नहीं है) इसके लिए सेट अप करने के लिए अतिरिक्त कार्य करने की आवश्यकता है (आयात लाइन जोड़ने और शुरूआत में सर्वर पर deploy.py फ़ाइल बनाना)।

यह विशेष योजना एक डीजेंगो प्रोजेक्ट के लिए है, लेकिन हो सकता है कि ऐसा ही एक विचार आपके लिए काम करेगा।


यह इस तरह से संभाला था, लेकिन मुझे लगता है कि आपका प्रश्न बेहतर है कि इसमें थोड़ा और स्पष्टता है

संक्षेप में: हाँ, यह सामान्य है यहाँ एक विस्तार का एक सा है:

आप इस के साथ मुख्य रिपॉजिटरी में शुरू करते हैं (जहां बॉक्स बदलते हैं):

main: --[E]--[F]--[G]

तो आप उत्पादन सर्वर को क्लोन करते हैं और एक परिवर्तनों को जोड़ते हैं, एच, जो परिनियोजन अनुकूलन करता है तो तैनाती रेपो इस तरह दिखता है:

production: --[E]--[F]--[G]--[H]

और फिर मुख्य रिपो पर अधिक काम होता है, परिवर्तनों को जोड़ते हुए, I और जे, मुख्य रेपो की तरह दिखते हैं:

main: --[E]--[F]--[G]--[I]--[J]

जो जब उत्पादन के लिए खींचा जाता है जैसे दिखता है:

production:  --[E]--[F]--[G]--[I]--[J]
                            \         
                             \-[H]

दो सिर के साथ, जो आप प्राप्त करने में विलय करते हैं:

production:  --[E]--[F]--[G]--[I]--[J]
                            \         \
                             \-[H]-----[K]

जहां के केवल जे प्लस है, जो आपने मूल रूप से एच में किया था।

अब अधिक काम मुख्य में होता है, दे:

main: --[E]--[F]--[G]--[I]--[J]--[L]--[M]

जो आप उत्पादन देने में खींचते हैं:

production:  --[E]--[F]--[G]--[I]--[J]--[L]--[M]
                            \         \
                             \-[H]-----[K]

और फिर आप मर्ज और प्राप्त करें:

production:  --[E]--[F]--[G]--[I]--[J]--[L]--[M]
                            \         \         \
                             \-[H]-----[K]-------[N]

इसलिए हर बार जब आप मुख्य से बदलाव लाते हैं, तो आप एक मर्ज कर रहे हैं, और एक नए परिवर्तनों का निर्माण कर रहे हैं (इस बार एन)।

मुझे लगता है कि ठीक है, और यह "सामान्य" है

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

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

अन्य उत्तर पारिश्रमिक कतार थे और उत्पादन में परिवर्तन देव रेपो में रहते थे और उत्पादन के माहौल (जैसे मेजबान: हैडर) की तरह अलग-अलग होने से उत्पन्न होता है





commit