5

बड़े Libre स्रोत सॉफ्टवेयर परियोजनाओं, मर्क्युरियल या इसी तरह के उपकरणों के साथ DVCS संस्करणीकृत है, जो निम्न में से अधिक परंपरागत माना जाता है में:एचजी भंडार की 'डिफ़ॉल्ट' शाखा में क्या जाना चाहिए?

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

या ... क्या वर्कफ़्लो का कुछ बेहतर पैटर्न है जिसे व्यापक रूप से स्वीकार किया जाता है?

उत्तर

4

Mercurial के लिए आपकी default शाखा का उपयोग करने के बारे में काफी मजबूत राय है। यह Standard Branching wiki page में प्रलेखित है।सार है:

  • आप अपने मुख्य विकास शाखा के लिए default के अलावा किसी अन्य नाम का उपयोग नहीं करना चाहिए।

    कारण यह है कि default वह शाखा है जो नए क्लोन द्वारा चेक की जाती है। यदि आप अपनी "मुख्य" शाखा के लिए किसी अन्य नाम का उपयोग करने का प्रयास करते हैं, तो उपयोगकर्ताओं को गलत जगह पर चीजों को क्लोन और प्रतिबद्ध करते समय कम या ज्यादा यादृच्छिक शाखा मिल जाएगी, जो आम तौर पर अवांछनीय है।

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

    तो हमेशा default शाखा में रक्तस्राव-एज कोड डालें और अपनी स्थिर रिलीज के लिए अन्य शाखाओं का उपयोग करें।

  • डिस्पोजेबल

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

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

    हमारे पास आंतरिक रूप से मर्कुरियल में कैश हैं, इसलिए समस्याएं ज्यादातर यूआई समस्याएं हैं: होस्टिंग साइट्स और लॉग व्यूअर hg branches चला सकते हैं ताकि सभी 10,000 शाखाएं एक ड्रॉप-डाउन मेनू में लोड हो सकें। यह वास्तव में धीमी और खराब उपयोगकर्ता के लिए बेकार है जो विशाल मेनू से एक शाखा का चयन करना चाहता है।

    यदि शाखाएं बंद हैं, तो वे hg branches में दिखाई नहीं देगी, और इसलिए समस्या को कम किया जाना चाहिए। हालांकि, उपकरण बंद शाखाओं को भी दिखाना चाहते हैं - यह सब उपकरण पर निर्भर करता है।

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

+0

हम्म। तो यह कह रहा है कि 'डिफ़ॉल्ट' में मुख्य विकास शाखा होनी चाहिए, यानी खून बहने वाला किनारा अंतिम स्थिर रिलीज नहीं है? क्या आपको पता है कि यदि इन शाखाओं में से अधिकांश बंद हैं तो ये प्रदर्शन समस्याएं रेपो को प्रभावित करती हैं? – snim2

+0

@ snim2: हां, मुख्य विकास को 'डिफ़ॉल्ट' शाखा पर रखें। यदि शाखाएं बंद हैं, तो आपको प्रदर्शन समस्याओं से बचना चाहिए। –

+0

धन्यवाद।मैंने यह जवाब स्वीकार कर लिया है, अन्य भी बहुत मूल्यवान थे लेकिन इसमें विशेष रूप से एचजी में कुछ उपयोगी अंतर्दृष्टि थी। – snim2

2

वहाँ आम, इस तरह के बात में, नहीं कर रहे हैं के रूप में "सबसे पारंपरिक" - हर कार्यप्रवाह स्थानीय सम्मेलन और टीम में विकास नीति की बात है।

मैंने दोनों नीतियों को अक्सर देखा, और मध्यवर्ती विविधताएं भी देखीं।

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

छोटे संस्करणों का नाम शाखाओं का नाम है, ऐसी शाखा में प्रत्येक रिलीज टैग है। Bugfix शाखाओं "डिफ़ॉल्ट" और सक्रिय संस्करणों शाखाओं

में पूरा करने के बाद बनाए गए हैं, लेकिन इस कार्यप्रवाह सिर्फ एक और उदाहरण है, बेहतर नहीं | दूसरों, जिम्मेदारी जुदाई के साथ मध्यम आकार की टीमों के लिए उपयुक्त स्थापित से भी बदतर काम न करे, "अराजक अराजकता" विकास में अच्छी तरह से काम करें

3

मैं वास्तविक कार्य के लिए मर्कुरियल और मास्टर में गिट में मास्टर का उपयोग करते हुए आदत में गिर गया है, खून बह रहा है, और रिलीज के लिए टैग और शाखाओं का उपयोग कर रहा हूं। hgsubversion और गिट-एसवीएन इस tack लेने लगता है।

+0

हां, मैंने बिल्कुल विपरीत किया है (स्थिर के लिए इस्तेमाल किया गया 'डिफ़ॉल्ट' और खून बहने वाली शाखाओं के लिए शाखाएं)। मुझे यकीन नहीं है कि क्या मैं कदम से बाहर हूं, या यदि परिवर्तन करने के लिए कोई मजबूत तर्क है। – snim2

1

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

व्यक्तिगत रूप से मैं प्रति रिलीज नामित शाखा पसंद करता हूं। बगफिक्सेस तब उन शाखाओं पर जा सकते हैं और hg merge का उपयोग करने के बाद सभी रिलीज के सापेक्ष आसानी से पोर्ट किया जा सकता है। यदि आप DEV और STABLE के साथ ऐसा करने का प्रयास करते हैं, तो आप केवल एक ही बनाए रखा रिलीज (अंतिम एक) हो सकते हैं, या आपकी स्थिर शाखा बढ़ती शाखाएं शुरू कर सकती है और आप प्रति रिलीज शाखा के संभवतः (संभवतः कम संगठित) संस्करण के साथ समाप्त हो जाते हैं संरचना।

+0

नामित शाखाओं के बारे में यह एक अच्छा मुद्दा है। 'डिफ़ॉल्ट' में DEV रखने के बारे में एकमात्र चीज यह है कि यदि आप इसे साझा रेपो से क्लोन करके कोड प्राप्त करते हैं, तो उस शाखा को स्थापित करने की संभावना है जो आप खून बह रहा है। मुझे नहीं पता कि यह वांछनीय है या नहीं। – snim2

+0

इस पर निर्भर करता है कि किसने इसे क्लोन करने की संभावना है, लेकिन मुझे लगता है कि ज्यादातर लोग स्रोत भंडार को देखते समय खून बहने लगते हैं। मैं करता हूँ। –

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