2010-11-17 8 views
22

मैं Mercurial एचजी के लिए नया हूँ। मेरे दोस्तों ने एक रेपो बनाया और मैं इसका इस्तेमाल करने जा रहा हूं। मैंने टोर्टोइज एचजी स्थापित किया और नवीनतम कोड प्राप्त करने का प्रयास किया। मैंने पाया कि क्लोन ऑपरेशन का उपयोग करते समय, यह इतिहास सहित सभी स्थानीय कोड को मेरे स्थानीय स्थान पर खींच देगा (क्या मैं सही हूँ?)। यह मेरे लिए जरूरी नहीं है। मैं सिर्फ नवीनतम कोड प्राप्त करना चाहता हूं। क्या इसके लिए कोई ऑपरेशन है?Mercurial एचजी का उपयोग करते समय, नवीनतम कोड कैसे प्राप्त करें?

+0

धन्यवाद आपके सभी दोस्तों! हालांकि मुझे अभी भी पूरे रेपो को क्लोन करना है, मैं हर जवाब से Mercurial एचजी के बारे में और अधिक सीखता हूं! – DeepNightTwo

उत्तर

18

संक्षेप में, नहीं।

थोड़ा में लंबे समय तक: मर्क्युरियल अभी तक "उथले" क्लोन जहां केवल इतिहास का हिस्सा पाने का समर्थन नहीं करता। तो प्रत्येक बार जब आप क्लोन करते हैं तो आप सभी परिवर्तनों के साथ संपूर्ण भंडार में खींचते हैं।

साथ ही, सबवर्सन के विपरीत, एक "संकीर्ण" क्लोन जहां आप केवल एक भंडार के एक हिस्से को चेकआउट करने के लिए कोई रास्ता नहीं है। उदाहरण के लिए, यदि भंडार निर्देशिका foo/ और bar/ है, वहाँ केवल bar/ निर्देशिका पाने के लिए कोई रास्ता नहीं है। दूसरे शब्दों में, Mercurial हमेशा परियोजना-व्यापी स्नैपशॉट पर काम करता है।

+1

ऐसा लगता है कि इतिहास Mercurial के लिए एक महत्वपूर्ण बात है। और इसमें हमेशा पूरा इतिहास शामिल होगा। – DeepNightTwo

+4

मैंने सामान्य रूप से Mercurial में जो भी उपयोग किया है, उसके जवाब में शब्दावली को बदल दिया: जब आप केवल फ़ाइल पेड़ का हिस्सा प्राप्त करते हैं तो आप केवल "उथले" क्लोन के बारे में बात करते हैं जब आप केवल इतिहास का हिस्सा प्राप्त करते हैं और "संकीर्ण" क्लोन प्राप्त करते हैं। –

+3

लोगों ने उथले क्लोन के लिए प्रोटोटाइप बनाए हैं, लेकिन वे अभी तक मुख्य वितरण का हिस्सा नहीं हैं। –

4

एक बार जब आप "टिप" (वर्तमान शाखा का अंतिम संस्करण - डिफ़ॉल्ट अगर सटीक नहीं है) का कोड प्राप्त करने के लिए एक संग्रह को क्लोन कर लेते हैं, तो आपको केवल update की आवश्यकता होती है।

आप TortoiseHG में एक अद्यतन कार्रवाई की है। एक बार हो जाने पर, आप फ़ोल्डर में फ़ाइलों को देख सकते हैं।

यदि आप रिपोजिटरी (एक पुराना संस्करण, या पुराना टैग किया गया राज्य) का एक और राज्य चाहते थे तो यह अभी भी update कमांड है, अन्य पैरामीटर के साथ (दस्तावेज़ या टोर्टोइज एचजी इंटरफ़ेस देखें)।

+0

आपने जो कहा है उसके लिए धन्यवाद! – DeepNightTwo

3

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

वह होस्टिंग सेवाओं में से एक का उपयोग कर रहा है, तो bitbucket की तरह, वहाँ आमतौर पर एक डाउनलोड लिंक जो आपने अभी स्रोत कोड देता है।

उदाहरण के लिए, यदि आप here जाना, वहाँ एक लिंक अप "स्रोत प्राप्त करें" और सही है जो आप फ़ाइल स्वरूप में कुछ विकल्प (ज़िप या whatnot।)

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

+0

मुझे चेकइन और फ़ाइलों को जोड़ने जैसे संचालन करने की आवश्यकता है। फिर भी मैं मर्कुरियल का इलाज एसवीएन के रूप में कर रहा हूं ... – DeepNightTwo

2

निश्चित रूप से। भंडार क्लोन करें, फिर .hg उपनिर्देशिका को हटा दें।

+0

समस्या यह है कि, यह अभी भी पूरे रेपो क्लोन करने के लिए बहुत समय लगा है। ऐसा लगता है कि इसे .... – DeepNightTwo

+0

वास्तव में ऐसा बुरा काम नहीं है। – Marian

5

सबसे आसान तरीका प्राप्त करने के लिए आप क्या चाहते हैं:

hg archive [destination folder] 
0

changesets का केवल एक उपसमूह खींच करने के लिए, एक या अधिक संशोधन के साथ -r/ पहचानकर्ता निर्दिष्ट - बी के साथ राजस्व या शाखाओं/--डाली। परिणामी क्लोन में केवल निर्दिष्ट परिवर्तन और उनके पूर्वजों को शामिल किया जाएगा।

उदा। hg clone -b NeededBranch http://example.com/myRepo

Mercurial manual

+1

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

+0

@YaakovKuperman: यह हो सकता है कि इतिहास को एक बार फिर खींचना ठीक हो, यदि इतिहास से तब तक काटा जाता है। लेकिन आप सही हैं, ज्यादातर मामलों में यह इतिहास के कुल आकार को बहुत कम नहीं करेगा। यह तकनीक गन्दा विलय संघर्ष स्थितियों से निपटने के लिए अधिक उपयोगी है। – Yitz

2

मैं थोड़ी देर हो चुकी हो सकता है, लेकिन वास्तव में यह मर्क्युरियल के साथ कुछ इतिहास भूल जाना संभव है। आपको बस अपनी mercurial.ini फ़ाइल से कन्वर्ट एक्सटेंशन को सक्षम करने की आवश्यकता है या।एचजीआरसी फ़ाइल।

[extensions] 
hgext.convert= 

अब आप संशोधित संशोधन से शुरू होने वाले परिवर्तनों को केवल "क्लोन" में परिवर्तित करने में सक्षम हैं।

hg convert --config convert.hg.startrev=[wheretostart] path_to_full_history_repo path_to_new_repo 

बस ध्यान दें कि यह एचजी क्लोन के साथ एक ही ऑपरेशन नहीं है। यही कारण है कि स्रोत भंडार एक स्थानीय भंडार होना चाहिए। उदाहरण के लिए हम फ़ोल्डर MyProject में भंडार है और हम सभी परिवर्तनों को संशोधन 100 के पहले किया भूलना चाहते हैं, तो हम निम्न आदेश का उपयोग कर सकते हैं:

hg convert --config convert.hg.startrev=[100] MyProject MyShrinkedProject 

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

+0

यह उत्तर मानता है कि एक बार पूर्ण क्लोन प्राप्त करना ठीक है, और तब से केवल आंशिक क्लोन उपयोग करें। यदि आपको कुछ इतिहास की आवश्यकता है, तो यह एक अच्छा समाधान है, लेकिन केवल एक निश्चित संशोधन पर वापस जा रहा है। यदि आप किसी भी इतिहास के साथ ताज़ा शुरू करना चाहते हैं: 1. एक पूर्ण क्लोन से शुरू करें। 2. एचजी मैनिफेस्ट चलाएं और परिणाम को फ़ाइल में सहेजें। 3. .hg फ़ोल्डर हटाएं। 4. एचजी init भागो। 5. फ़ाइलों की सहेजी गई सूची पर एचजी जोड़ें। – Yitz

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