mercurial - मैं मर्क्यूरियल के भंडार का उप-फ़ोल्डर कैसे क्लोन कर सकता हूं?




clone dvcs (4)

मेरे पास एक मर्क्यूरियल रिपॉजिटरी है जिसमें मुट्ठी भर संबंधित परियोजनाएँ हैं। मैं इन परियोजनाओं में से किसी एक पर काम करना चाहता हूं।

क्या क्लोनिंग रिपॉजिटरी का सिर्फ एक हिस्सा है, और क्या इसे हासिल करने का सही तरीका है?


(देर से 2016) मेनलाइन मर्क्यूरियल अभी भी "संकीर्ण क्लोन" के लिए पैकेज समर्थन नहीं करता है, लेकिन तीसरे पक्ष के एक्सटेंशन हैं जो विभिन्न तरीकों से समस्या से निपटते हैं।

यदि आप केवल एक संकीर्ण चेकआउट (उर्फ "विरल चेकआउट" या "फ़ाइल पथ द्वारा आंशिक चेकआउट") का सामना कर सकते हैं, तो sparse.py प्रयोगात्मक रिपॉजिटरी ( hgext3rd/ निर्देशिका के अंदर देखो) से फेसबुक का sparse.py एक्सटेंशन काम करने योग्य हो सकता है। इस परिदृश्य में, आप अभी भी पूर्ण इतिहास (इस प्रकार .hg निर्देशिका कोई छोटा नहीं है) को क्लोन करते हैं, लेकिन आपकी कार्यशील निर्देशिका केवल पूर्ण भंडार के सबसेट पर ही दिखती है / कार्य करती है।

वैकल्पिक रूप से Google ने एक संकीर्ण एरो एक्सटेंशन बनाया है जो संकीर्ण क्लोनिंग (उर्फ "फ़ाइल पथ द्वारा आंशिक क्लोनिंग") करता है। आपको सर्वर, क्लाइंट के नियंत्रण में रहना होगा और प्रायोगिक सुविधाओं का उपयोग करने के लिए तैयार रहना होगा, लेकिन यह वास्तव में क्लोन कॉपी किए गए इतिहास को .hg में उप-समूह में मूल भंडार में जो कुछ भी है, को प्रतिबंधित करता है।


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

विशेष रूप से, अनुभाग देखें, मर्क्यूरियल से परिवर्तित :

किसी मौजूदा की सबसेट पाने के लिए मर्क्यूरियल रिपॉजिटरी को फ़िल्टर करना भी उपयोगी है। उदाहरण के लिए एक रिपॉजिटरी फू के एक उपनिर्देशिका उप-पाठ को अपने स्वयं के जीवन के साथ एक रिपॉजिटरी में बदलने के लिए (अपना पूरा इतिहास रखते हुए), निम्नलिखित करें:

$ echo include subfoo > /tmp/myfilemap
$ echo rename subfoo . >> /tmp/myfilemap
$ hg convert --filemap /tmp/myfilemap /path/to/repo/foo /tmp/mysubfoo-repo

मैंने इस मुद्दे पर ठोकर खाई है और इसे करने का एक तरीका पाया है: सीमलिंक (केवल दुर्भाग्य से लिनक्स) का उपयोग करना

उदाहरण के लिए, यदि आपको रिपॉजिटरी में केवल /project आवश्यकता है, तो आपके कंप्यूटर पर रेपो को किसी अन्य फ़ोल्डर में क्लोन किया जाता है, फिर ln -s /repo/location/ project । मर्क्यूरियल इसे संभाल लेगा






dvcs