git - करन - नामकरण संस्कार मुहूर्त




गिट शाखा सर्वश्रेष्ठ प्रथाओं का नामकरण (5)

नोट, जैसा कि e703d7 प्रतिबद्ध है या b6c2a0d (मार्च 2014), अब गिट 2.0 का हिस्सा है, आपको एक और नामकरण सम्मेलन मिलेगा (जिसे आप शाखाओं पर लागू कर सकते हैं)।

"जब आपको अंतरिक्ष का उपयोग करने की आवश्यकता होती है, तो डैश का उपयोग करें" यह कहने का एक अजीब तरीका है कि आपको किसी स्थान का उपयोग नहीं करना चाहिए।
चूंकि कमांड लाइन विवरणों के लिए धराशायी-बहु-शब्दों का उपयोग करना अधिक आम है, इसलिए आप इन स्थानों में रिक्त स्थान का भी उपयोग नहीं करना चाहते हैं।

एक शाखा के नाम में स्थान नहीं हो सकता है (देखें " शाखा नाम के भीतर कौन से पात्र अवैध हैं? " और git check-ref-format मैन पेज )।

तो प्रत्येक शाखा नाम के लिए जिसे बहु-शब्द अभिव्यक्ति द्वारा दर्शाया जाएगा, एक ' - ' (डैश) को विभाजक के रूप में उपयोग करना एक अच्छा विचार है।

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

मैंने यहां पुराने धागे को देखकर सीख लिया था कि मैं नाम / नाम में शाखाओं का नाम देना शुरू कर सकता हूं, यानी विषय / कार्य, या ऐसा कुछ। मैं ऐसा करना शुरू कर सकता हूं और देख सकता हूं कि क्या यह चीजों को व्यवस्थित रखने में मदद करता है।

गिट शाखाओं का नामकरण करने के लिए कुछ सर्वोत्तम अभ्यास क्या हैं?

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


प्रत्येक कार्य के लिए तीन शाखाएं / विलय क्यों लेते हैं? क्या आप इसके बारे में अधिक समझा सकते हैं?

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

चूंकि ये शाखाएं अंततः मास्टर में विलय हो रही हैं, इसलिए आप विलय के बाद उन्हें सुरक्षित रखना चाहिए। जब तक आप - --squash साथ विलय नहीं कर --squash , तब भी शाखा का पूरा इतिहास तब भी मौजूद होगा जब आपको इसकी आवश्यकता हो।


मेरी व्यक्तिगत प्राथमिकता एक शाखा शाखा के साथ किए जाने के बाद शाखा का नाम हटाना है।

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

मेरे उपयोग में शाखा का नाम पूरी तरह से एक हैंडल है जो उस पर काम करते समय एक विषय शाखा का जिक्र करने के लिए है। एक बार विषय शाखा पर काम करने के बाद, मैंने शाखा के नाम से छुटकारा पा लिया, कभी-कभी बाद में संदर्भ के लिए प्रतिबद्धता टैगिंग।

इससे git branch का उत्पादन भी अधिक उपयोगी होता है: इसमें केवल लंबी शाखाओं और सक्रिय विषय शाखाएं सूचीबद्ध होती हैं, न कि सभी शाखाएं।


मैंने जो विभिन्न योजनाएं देखी हैं और मैंने जो टूलिंग का उपयोग कर रहा हूं, उसके आधार पर मिश्रित और मिलान किया है। तो मेरा पूरा शाखा नाम होगा:

नाम / सुविधा / मुद्दा-ट्रैकर संख्या / शॉर्ट वर्णन

जो अनुवाद करेगा:

माइक / ब्लॉग / RSSI-12 / लोगो ठीक

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


विन्सेंट ड्रिससेन द्वारा एक सफल गिट ब्रांचिंग मॉडल के अच्छे सुझाव हैं। एक तस्वीर नीचे है। यदि यह शाखा मॉडल आपको अपील करता है तो गिट के प्रवाह प्रवाह पर विचार करें। दूसरों ने प्रवाह के बारे में टिप्पणी की है

Driessen के मॉडल में शामिल हैं

  • एक मास्टर शाखा, केवल रिलीज के लिए उपयोग की जाती है। विशिष्ट नाम master

  • उस शाखा से "विकसित" शाखा। यही वह मुख्य मुख्य कार्य के लिए उपयोग किया जाता है। विशिष्ट नाम devel

  • विकास शाखा से कई फीचर शाखाएं बंद हैं। सुविधा के नाम पर आधारित नाम। इन्हें मास्टर में या रिलीज शाखाओं में नहीं, बल्कि विकास में विलय कर दिया जाएगा।

  • उम्मीदवार रिलीज रखने के लिए रिलीज शाखा, केवल बग फिक्स और कोई नई विशेषताएं नहीं। विशिष्ट नाम rc1.1

हॉटफिक्स मास्टर से आने वाले परिवर्तनों के लिए अल्पकालिक शाखाएं हैं और विकास शाखा के बिना मास्टर में प्रवेश करेंगे।





branch