Git का उपयोग करते समय, सक्रिय विकास के लिए मास्टर शाखा का उपयोग करना उचित है?


32

सबसे पहले, कुछ पृष्ठभूमि, हम अपने सभी प्रोजेक्ट टीमों को गिट का उपयोग करने के लिए आगे बढ़ने की प्रक्रिया में हैं और इस दिशा-निर्देश को बनाने की प्रक्रिया में हैं कि कैसे रिपॉजिटरी का आयोजन किया जाना चाहिए ताकि कुछ शाखाओं को निरंतर एकीकरण के लिए भी मॉनिटर किया जा सके और परीक्षण सर्वरों के लिए स्वचालित तैनाती। वर्तमान में दो मॉडल हैं जो विकसित हो रहे हैं:

  1. भारी शाखा के साथ सफल शाखा पर nvie.com लेख से प्रभावित हैवीली , सबसे स्थिर कोड, रक्तस्राव धार कोड के लिए एक विकास शाखा और कोड के लिए एक एकीकरण शाखा का प्रतिनिधित्व करता है जो क्यूए परीक्षण के लिए तैयार है।

  2. एक वैकल्पिक मॉडल जिसमें मास्टर शाखा रक्तस्राव किनारे विकास कोड का प्रतिनिधित्व करती है, कोड के लिए एक एकीकरण शाखा जो क्यूए परीक्षण के लिए तैयार है, और स्थिर कोड के लिए एक उत्पादन शाखा जो तैनाती के लिए तैयार है।

इस बिंदु पर, यह आंशिक रूप से मास्टर शाखा का प्रतिनिधित्व करने के संबंध में शब्दार्थ का विषय है, लेकिन मास्टर शाखा पर सक्रिय विकास वास्तव में एक अच्छा अभ्यास है या क्या यह वास्तव में प्रासंगिक नहीं है?


1
मुझे वह वफ़्फ़्लो पसंद है जो स्कॉट चाकोन GitHub को विकसित करने के लिए उपयोग करता है: scottchacon.com/2011/08/31/github-flow.html
user16764

1
जैसा कि वर्णन किया गया है कि यह मुझे एक शब्दार्थ समस्या से अधिक प्रतीत होता है - कोई भी संगठन अपनी प्रक्रियाओं को विकसित करने वाला नहीं है और कुछ मामलों में नामों को आपके वर्कफ़्लो को प्रतिबिंबित करने की आवश्यकता है। आम तौर पर यह प्रतीत होता है कि कहीं न कहीं आप कुछ इस तरह से परिभाषित करते हैं कि "हेड का स्रोत कोड हमेशा एक उत्पादन-तैयार स्थिति को दर्शाता है"। आप जो कॉल करना चुनते हैं, वह कम महत्वपूर्ण नहीं है, लेकिन गिट-फ्लो और GitHub वर्कफ़्लो दोनों उस पृथक्करण पर ध्यान केंद्रित करते हैं और जब आप उत्पादन के लिए तैयार "चीज़" पर जोर देते हैं, तो नियंत्रण करें
मर्फ़

@ मर्फ़ - यह सच है, लेकिन जब से हम इसे खरोंच से कुछ कर रहे हैं, तो मैंने सोचा कि यह आम सम्मेलनों के लिए अधिक या कम अनुसरण करना सबसे अच्छा होगा ताकि नए डेवलपर्स को काम पर रखा जाए जो असामान्य आंतरिक प्रथाओं के कारण एक कठिन सीखने की अवस्था नहीं रखते हैं।
rjzii

फिर आपने खुद के सवाल का जवाब दिया (-: सवाल पूछने से ईमानदार होने के लिए आप वक्र से आगे हैं ...
मर्फ़

जवाबों:


33

masterशाखा की एकमात्र वास्तविक परिभाषित विशेषता यह है कि यह कुछ कार्यों के लिए डिफ़ॉल्ट है। इसके अलावा, शाखा के नाम का अर्थ केवल एक विशिष्ट भंडार के भीतर है। उदाहरण के लिए, मेरा masterआपके लिए इशारा हो सकता है development। इसके अलावा, एक masterशाखा की भी आवश्यकता नहीं है, इसलिए यदि कोई भ्रम है कि किस शाखा के बारे में होना चाहिए, तो मेरी सलाह यह है कि इसे पूरी तरह से छोड़ दें।

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


7
+1। और क्योंकि "प्रोडक्शन रेडी" कोड महत्वपूर्ण कोड है, इसे इस महत्व को उजागर करने वाले नाम के साथ शाखा में भी रहना चाहिए। "मास्टर" डिफ़ॉल्ट शाखा के नाम के रूप में निश्चित रूप से उस अनुरोध को पूरा नहीं करता है, क्योंकि इसका उपयोग हर दूसरे रिपॉजिटरी में जो भी इरादों के लिए किया जाता है।
बाननेविज़न

4
+1। यह वास्तविक जीवन का उत्तर है। बिंदु पर जोर देने के लिए: आपकी टीम के किसी भी व्यक्ति ने "मास्टर" शाखा को परिभाषित नहीं किया, गिट सिस्टम ने किया। किसी भी महत्वपूर्ण चीज के लिए, उन शाखाओं से चिपके रहें जिन्हें आपकी टीम के किसी व्यक्ति ने परिभाषित किया है।
ट्रैविस विल्सन

1
पूरी तरह से सहमत। जबकि मुझे git flow मॉडल ( nvie.com/posts/a-successful-git-branching-model ) बहुत पसंद है , केवल एक चीज जो मुझे परेशान करती है वह यह है कि मास्टर सख्ती से रिलीज के लिए आरक्षित है, जो काउंटर-सहज ज्ञान युक्त है।
बच्ची

12

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

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


3
क्या टैग के माध्यम से संस्करण ट्रैकिंग करना बेहतर नहीं है?
एडोनिस के। काकोलीडिस

1
@AdonisK .: मैं आपके प्रश्न की प्रासंगिकता को देखने में विफल हूं।
जोएल एथरटन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.