2011-09-01 5 views
5

मैंने Mercurial subrepositories पर हर प्रश्न पढ़ा है जो मैं कर सकता था और अभी भी यह सुनिश्चित नहीं करता कि यह कैसे काम करता है। हम आईआईएस पर hgweb.cgi का उपयोग कर रहे हैं, इसलिए हमारे पास हमारे सभी रिपो के लिए http: // पथ हैं।क्लोन में परिवर्तन किए जाने पर Mercurial subrepositories को अद्यतित रखने के लिए वर्कफ़्लो?

यहाँ मूल लेआउट है:

/Libraries - http://server/Libraries 
/Project1 - http://server/Project1 
/Project1/LibrariesSubrepo - http://server/Project1/LibrariesSubrepo (clone of libraries) 
/Project2 - http://server/Project1 
/Project2/LibrariesSubrepo - http://server/Project2/LibrariesSubrepo (clone of libraries) 

.hgsub फ़ाइलों में, मैं पथ सेटअप के रूप में:

LibrariesSubrepo = LibrariesSubrepo 

अगर मैं परियोजनाओं पर काम करना चाहते हैं, मैं उन लोगों से क्लोन मेरे वर्कस्टेशन के लिए सर्वर इसलिए मेरे पास प्रोजेक्ट 1 और प्रोजेक्ट 2 का क्लोन है और यह स्वचालित रूप से सबरेप को भी खींचता है।

प्रोजेक्ट 1 में मेरे स्थानीय वर्कस्टेशन पर, मैं/Project1/पुस्तकालयों Subrepo में फ़ाइलों में कुछ बदलाव करता हूं। मैं कैसे सुनिश्चित करूं कि उन परिवर्तनों ने इसे सर्वर पर पुस्तकालयों के लिए स्रोत रेपो में वापस कर दिया है? क्या मुझे subrepo से subrepo के स्रोत repo में परिवर्तन मैन्युअल रूप से धक्का देना है?

मैं प्रोजेक्ट 1 रेपो में स्थानीय रूप से परिवर्तन करने में सक्षम होना चाहता हूं, फिर उन परिवर्तनों को प्रतिबद्ध/धक्का दे सकता हूं, फिर प्रोजेक्ट 2 में, मुझे सर्वर से परिवर्तनों को खींचने में सक्षम होना चाहिए जो प्रोजेक्ट 2/लाइब्रेरीसब्रेपे को अद्यतन करना चाहिए नवीनतम संस्करण।

उत्तर

4

आप निश्चित रूप से सर्वर पर Libraries भंडार को Project1 में अपने LibrariesSubrepo से मैन्युअल रूप से धक्का कर सकते हैं और फिर स्वयं एक Project2 क्लोन में LibrariesSubrepo में Libraries से खींच।

हालांकि, अगर आप भी subrepos सर्वर पर लिंक कर सकते हैं:

  1. share extension आप दो या अधिक खजाने कि साझा एक .hg फ़ोल्डर बना सकते हैं। सर्वर पर ऐसा करें ताकि सर्वर पर subrepo के तीन उदाहरण .hg फ़ोल्डर्स साझा करें।

  2. सिमलिंक .hg फ़ोल्डरों - अधिक oldschol और यह तभी काम करता है यदि आप किसी सर्वर जहां सिमलिंक (यूनिक्स सर्वर या Windows Vista और बाद में सही विशेषाधिकार के साथ) बना सकते हैं पर हैं।

  3. सर्वर पर केवल एक सब्रेपो रखें लेकिन hgweb कॉन्फ़िगरेशन में इसे तीन बार बेनकाब करें। इस तरह: Project1, Project2, और Libraries:

    [paths] 
    Project1     = /repos/Project1 
    Project1/LibrariesSubrepo = /repos/Libraries 
    Project2     = /repos/Project2 
    Project2/LibrariesSubrepo = /repos/Libraries 
    

सभी मामलों में, वहाँ वास्तव में सर्वर पर केवल तीन खजाने कर रहे हैं।

+0

आपके उत्तर के लिए धन्यवाद ... अच्छी जानकारी! – jpshook

+0

एक अतिरिक्त प्रश्न: Subrepos के साथ काम करते समय, क्या आप सामान्य रूप से सबप्रो में पहले प्रतिबद्ध होना चाहते हैं, फिर माता-पिता रेपो में या क्या आप केवल माता-पिता में प्रतिबद्ध हैं? – jpshook

+1

कृपया असंबद्ध प्रश्नों को नए प्रश्नों के रूप में पूछें, और कृपया उन्हें Mercurial मेलिंग सूची पर पूछें। चर्चा के लिए यह एक बेहतर मंच है। –

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

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