2012-10-25 9 views
8

Mercurial में, संशोधन के चरण मनमाने ढंग से बदला जा सकता है। सभी संभावित संक्रमणों के लिए चरण परिवर्तन के परिणाम क्या हैं (सार्वजनिक, मसौदा, गुप्त) एक्स (सार्वजनिक, मसौदा, गुप्त)? कौन से चरण परिवर्तन सुरक्षित हैं? जो परेशानियों और किस तरह की परेशानियों का कारण बन सकता है? कौन से कम या कम नहीं हैं?Mercurial: चरण बदलने के क्या परिणाम हैं?

उत्तर

8

एक प्रतिबद्धता के लिए डिफ़ॉल्ट चरण draft है, इस तरह चरणबद्ध नहीं होने पर उनका इलाज किया गया था। draft परिवर्तन को दबाते समय, Mercurial स्वचालित रूप से अपने चरण को public में बदल देता है। आप यह जानने के लिए इसका उपयोग कर सकते हैं कि आपने कौन से बदलाव पहले ही प्रकाशित किए हैं या नहीं।

लेकिन असली मुद्दा जब changeset public चरण में है, अस्थिर आप उन्हें इतिहास संपादन एक्सटेंशन के साथ बदल नहीं दूँगा कि (जैसे mq, rebase, आदि) है। यह वास्तव में महत्वपूर्ण है, क्योंकि इतिहास संपादन स्थानीय भंडार में केवल होता है, वे pull/push संचालन के साथ प्रचार नहीं करते हैं। इसलिए, एक बार एक परिवर्तन प्रकाशित होने के बाद, यह नियंत्रण से बाहर है, इसे बदलना खतरनाक है।

आप किसी भी चरण से किसी अन्य चरण में बदल सकते हैं। "सामान्य प्रवाह" एक उच्च चरण (गुप्त-> ड्राफ्ट-> सार्वजनिक) में स्थानांतरित करना है, लेकिन Mercurial --force विकल्प के साथ परिवर्तन को निम्न चरण में बदलने की अनुमति देता है। अकेले एक चरण परिवर्तन हानिरहित है। उदाहरण के लिए, public से draft या secret पर जाने पर होने वाली एकमात्र चीज यह है कि इतिहास संपादन की सुरक्षा गिरा दी जाती है, कुछ और नहीं, खींचें और धक्का अभी भी सामान्य रूप से काम करेगा, Mercurial कभी भी परिवर्तनों के बारे में भ्रमित नहीं हो सकता क्योंकि उनके पास अद्वितीय पहचानकर्ता हैं । इतिहास संपादन कार्रवाई के बाद होती है, इस तरह एक चरण परिवर्तन समस्या का कारण बन सकता है। और यही कारण है कि Mercurial चरण परिवर्तन में चेतावनी देता है और --force विकल्प की आवश्यकता है, यह पुष्टि के रूप में कि आप वास्तव में यही चाहते हैं।

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

+0

इन विवरणों के लिए धन्यवाद, हालांकि यह मेरे प्रश्न का उत्तर नहीं देता है: मौजूदा परिवर्तन के चरण को बदलते समय क्या होता है? जैसे सार्वजनिक रूप से एक परिवर्तन के लिए गुप्त से जो पहले से ही धक्का दिया गया है? क्या यह काम करता है या यह Mercurial भ्रमित कर सकता है? – mstrap

+0

आप किसी भी अन्य चरण से किसी भी चरण में बदल सकते हैं। क्या होता है कि यदि आप निचले चरण में बदलने की कोशिश करते हैं, तो आपको इसे '--force' के साथ पुष्टि करनी होगी। चरण परिवर्तन स्वयं किसी भी समस्या का कारण नहीं है। चरण बदलने के बाद आप क्या कर सकते हैं समस्या क्या हो सकती है। जब आप 'सार्वजनिक' से 'मसौदे' में बदलते हैं तो आप इतिहास संपादन की सुरक्षा को हटा रहे हैं, यह आपको गड़बड़ करने की अनुमति देता है। –

+0

Mercurial के बारे में क्या - क्या यह जनता से ड्राफ्ट में बदलकर भ्रमित हो सकता है? – mstrap

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

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

सभी चरण परिवर्तन कम या ज्यादा नहीं हैं; यह इंगित करने के लिए सिर्फ एक मार्कर है कि संशोधन के साथ क्या करना सुरक्षित है या नहीं।

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