2012-02-24 11 views
5

मैं अक्सर अपनी नदी के ऊपर क्लोन के एक स्थानीय दुकान फिर से स्थानीय स्तर पर अपने वास्तविक काम के माहौल के लिए रखते हुए, और फिर बस क्लोनिंग द्वारा मर्क्युरियल के साथ काम:फिर से उपरोक्त खींचने के बिना स्थानीय क्लोन कैसे बनाएं?

$ cd /clones 
$ hg clone ssh://external-repo.example.com/some/repo/path/foo 
$ cd ~/Development 
$ hg clone /clones/foo 

यह मेरे लिए विशेष रूप से उपयोगी है, क्योंकि मैं अक्सर नए क्लोन बनाना चाहते हवाई जहाज पर, आदि, जहां मेरे पास इंटरनेट का उपयोग नहीं है। हालांकि, यह तब काम नहीं करता है जब मूल क्लोन में subrepos होता है - .hgsubstate फ़ाइल की उपस्थिति का अर्थ है कि hg स्थानीय क्लोन संशोधन को पकड़ने के बजाय हमेशा इंटरनेट पर जायेगा (भले ही वे समान) हों। स्थानीय क्लोन को इंटरनेट पर बाहर जाने के बिना फ़ाइलों को कॉपी करने का कोई तरीका है?

This question एक जवाब जो शायद काम करेगा है, लेकिन लंबी अवधि के प्रबंधन (/clones/ में क्लोन में .hgsubstate फ़ाइल को हटाने, और फिर उस से स्थानीय क्लोन बनाने के लिए) बहुत दुर्भाग्यपूर्ण लगता है।

उत्तर

5

आप इस तरह अपने .hgsub फ़ाइल में एक "तुच्छ" subrepository पथ का उपयोग कर सकते हैं:

foo = foo 
bar = bar 

यह recommended setup है। एक लेआउट सेटअप का लाभ यह है कि क्लोन में समान संरचना आपके द्वारा क्लोजिटरी के रूप में क्लोन किया गया है। विमान पर जब आप अपने क्लोन क्लोन कर सकते हैं।

वैकल्पिक रूप से, आप [subpaths] सेटिंग का उपयोग स्थानीय पथों पर यूआरएल को फिर से मैप करने के लिए कर सकते हैं। यह आपको अपनी ~/.hgrc फाइल करने के लिए

[subpaths] 
http://server/(.*) = /clones/libs/\1 

जोड़ने और फिर आप देखेंगे कि रास्तों /clones/libs को पुनः मानचित्रित हैं जब आप को क्लोन करने देता है।

+0

धन्यवाद, यह वही है जो मैं चाहता हूं - शायद हमारे सभी मौजूदा रिपोज़ को "तुच्छ" में बदलने के लिए बहुत मुश्किल है, लेकिन इसका उपयोग नए लोगों के लिए करेगा। शुक्र है, subpaths मौजूदा लोगों के लिए मेरी समस्या का समाधान होगा। –

1

आप उप-उपनिवेशों को क्लोन करके इसे प्राप्त कर सकते हैं।

$ cd ~/Development 
$ hg clone -U /clones/foo 
$ hg clone -U /clones/foo/bar foo/bar 
$ hg update -R foo 

अद्यतन के बाद से subrepository मौजूद है और गुरु पर अद्यतन के लिए आवश्यक changeset शामिल इंटरनेट का उपयोग की जरूरत नहीं है: कि foo मान एक भी subrepo बुलाया बार भी है।

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