2012-11-29 30 views
11

मैं Mercurial के लिए नया हूँ और अभी भी मूल्यांकन प्रक्रिया में, तो इन चार अवधारणाओं मेरे लिए भ्रमित कर रहे हैं। कुछ का उल्लेख गिट की स्टेजिंग/इंडेक्स अवधारणा के बराबर है, या कुछ गिट के स्टेजिंग से भी बेहतर है। कैसे चार कमांड hg graft, hg record, hg qrecord और hg shelve (और hg transplant, लेकिन इस Graft vs. Transplant से समझाया गया है पहले से ही) एक दूसरे से तुलना करते हैं, और कैसे कतारों की अवधारणाओं और dirstate? किस मामले में मामलों का चयन दूसरे पर किया जाता है? मुझे पता है कि प्रत्येक के लिए सहायता पृष्ठ हैं, लेकिन यह पता लगाना मुश्किल है कि प्रत्येक व्यक्ति सामान्य रूप से वीसीएस के रूप में क्या करता है मेरे लिए एक नया विषय है।Mercurial: भ्रष्टाचार बनाम रिकॉर्ड बनाम qrecord बनाम शेल्व बनाम प्रत्यारोपण बनाम dirstate बनाम कतार

+0

भ्रष्टाचार अवधारणा नहीं है और स्टेजिंग/इंडेक्स से संबंधित नहीं है, अवधारणा से अवधारणा (अवधारणा * रिकॉर्ड * के पीछे विचार *) –

+1

और आप ** शेल्फ ** ** "भ्रम सूची" में भी जोड़ सकते हैं –

+0

धन्यवाद , मैंने "आदेश" और "अवधारणाओं" के बीच अंतर करने के लिए प्रश्न को अद्यतन किया, और सूची में दो और जोड़े। – Iodnas

उत्तर

17

Mercurial के डिजाइन में बस एक स्टेजिंग क्षेत्र की अवधारणा शामिल नहीं है। यही है, स्थानीय संशोधन और प्रतिबद्धता के बीच कोई मध्यवर्ती राज्य नहीं है।

hg graftgit cherry-pick के बराबर है:

यहाँ अवधारणाओं आप का उल्लेख में से प्रत्येक के एक सिंहावलोकन है। यह एक शाखा से दूसरी शाखा में एक प्रतिबद्धता की प्रतिलिपि बनाता है। इस सुविधा के लिए एक सामान्य उपयोग केस एक रिलीज शाखा से दूसरे में एक बग फिक्स कॉपी करना है। यह आदेश पुराने (और अब अप्रचलित) hg transplant एक्सटेंशन को प्रतिस्थापित करता है।

hg record और hg qrecordgit add --patch के समान हैं। वे आपको प्रतिबद्धता के लिए हंसी का चयन करने की अनुमति देते हैं। इसलिए यदि आपने एक फ़ाइल के कई अलग-अलग क्षेत्रों को संशोधित किया है, तो आप चुन सकते हैं कि आप कौन से क्षेत्र (यानी शिकारी) वास्तव में प्रतिबद्ध करना चाहते हैं और जिन्हें आप स्थानीय संशोधनों के रूप में छोड़ना चाहते हैं।

qrecord केवल तभी उपलब्ध है यदि आपके पास mq सक्षम है। यह एक मानक प्रतिबद्धता के बजाय mq पैच के लिए प्रतिबद्ध है।

hg shelvegit stash के समान है। यह आपको अस्थायी रूप से स्थानीय फ़ाइलों को आपकी फ़ाइलों (या फ़ाइल के शिकारी) में अलग करने की अनुमति देता है। जब आप उनके लिए तैयार हों तो ये संशोधन unshelved हो सकते हैं।

dirstate Mercurial स्रोत कोड का एक आंतरिक वर्ग है। यह उपयोगकर्ता के संपर्क में नहीं है।

Mercurial Queues (mq के रूप में भी जाना जाता है) शायद सबसे नज़दीक आप Mercurial में एक स्टेजिंग क्षेत्र में पहुंच जाएंगे। यहां Mercurial विकी से एक विवरण दिया गया है:

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

mq अक्सर पॉलिश/rework करने के लिए प्रयोग किया जाता है करता है कि आप स्थानीय रूप से परीक्षण कर रहे हैं, लेकिन एक सार्वजनिक स्थान पर धकेल दिया नहीं किया है। कुछ लोग तीसरे पक्ष के कोड में संशोधन का एक सेट बनाए रखने के लिए इसका भी उपयोग करते हैं।

+1

यह पहले से ही बहुत उपयोगी है। मैंने सूची में 'qrecord' और 'shelve' जोड़ा ... – Iodnas

+0

ऐसा लगता है कि' शेल्व 'एक उन्नत' रिकॉर्ड' कमांड है। – Iodnas

+0

@lodnas: मैंने 'ट्रांसप्लेंट', 'शेल्व' और' qrecord' शामिल करने के लिए उत्तर अपडेट किया। –

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