लाइब्रेरी बी और सी प्रोजेक्ट ए के उपनिर्देशिका मैं क्या कर कि मेरा पहले ही परियोजना विकास शुरू करने के लिए है कि लाइब्रेरी बी का उपयोग करता चाहते हैं होना चाहिए, लेकिन अन्यथा बिल्कुल प्रोजेक्ट ए के साथ संबद्ध नहीं है?
किसी भी परियोजना दोनों स्वतंत्र रूप से और मौजूद कर सकते हैं एक ही समय में एक अन्य परियोजना के subrepository के रूप में। मैं वर्कफ़्लो का सुझाव देकर समझाऊंगा।
सबसे पहले, अपने परियोजनाओं में से प्रत्येक (ए, बी, सी) एक धन्य भंडार है कि कहीं प्रकाशित किया जाता है होना चाहिए:
आप अपनी खुद की सर्वर पर hgwebdir चला सकते हैं, या उपयोग करना एक Mercurial होस्टिंग सेवा की तरह Bitbucket या Kiln। इस तरह डेवलपर्स के पास परिवर्तनों को खींचने/पुश करने के लिए केंद्रीय प्राधिकरण बिंदु होता है, और आपके पास बैकअप बनाने के लिए कुछ है।
अब आप इन खजाने के क्लोन दो अलग अलग तरीकों पर काम करने के लिए कर सकते हैं:
सीधे क्लोन अपनी परियोजना। उदाहरण के लिए:
hg clone http://bitbucket.org/LachlanG/LibraryB C:\Lib\LibraryB
और/या निम्नलिखित सामग्री के साथ ProjectA
की जड़ में एक .hgsub
फ़ाइल डालकर subrepository परिभाषाओं बनाएँ:
libraries/libraryB = http://bitbucket.org/LachlanG/LibraryB
libraries/libraryC = http://bitbucket.org/LachlanG/LibraryC
ये subrepository परिभाषाओं मर्क्युरियल बताते हैं कि जब भी परियोजना ए को क्लोन किया जाता है, तो उसे libraries
फ़ोल्डर में लाइब्रेरी बी और लाइब्रेरी सी के क्लोन भी रखना पड़ता है।
यदि आप प्रोजेक्ट ए में काम कर रहे हैं और प्रतिबद्ध हैं, तो libraries/LibraryB
और libraries/LibraryC
में आपके परिवर्तन भी किए जाएंगे। Mercurial रिकॉर्ड करेगा कि लाइब्रेरी का कौन सा संस्करण प्रोजेक्ट ए द्वारा .hgsubstate
फ़ाइल में उपयोग किया जा रहा है। नतीजा यह है कि यदि आप पिछले सप्ताह काम करने वाले कामों को देखने के लिए hg update
प्रोजेक्ट के पुराने संस्करण में हैं, तो आपको अपने पुस्तकालयों का संबंधित संस्करण भी मिलता है। आपको टैग बनाने की भी आवश्यकता नहीं है :-)
जब आप hg push
प्रोजेक्ट ए को धन्य भंडार में बदलता है, तो Mercurial भी उपरोक्त परिवर्तनों को अपने मूल में धक्का देना सुनिश्चित करेगा। इस तरह आप कभी भी परियोजना परिवर्तनों को गलती से प्रकाशित नहीं करते हैं जो अप्रकाशित लाइब्रेरी परिवर्तनों पर निर्भर करते हैं।
यदि आप सब कुछ स्थानीय रखना पसंद करते हैं, तो आप उपरोक्त परिभाषाओं में यूआरएल के बजाय सापेक्ष पथों का उपयोग करके इस वर्कफ़्लो का उपयोग कर सकते हैं।
स्रोत
2010-12-16 10:42:50
वाक्य के अंत में आपके द्वारा वर्णित पुस्तकालय फ़ोल्डर कहां है, "ये उपनिवेश परिभाषाएं बताती हैं कि जब भी प्रोजेक्ट ए क्लोन किया जाता है, तो उसे पुस्तकालय फ़ोल्डर में लाइब्रेरीबी और लाइब्रेरीसी के क्लोन भी रखना पड़ता है।" – LachlanG
यह सिर्फ एक फ़ोल्डर है, लाइब्रेरी/लाइब्रेरी बी = http://bitbucket.org/LachlanG/LibraryB का बायां हिस्सा है जहां दाएं तरफ से क्लोन –
@LachlanG होना चाहिए: यह ProjectA की जड़ में दिखाई देगा क्लोन, उदाहरण के लिए 'सी: \ देव \ ProjectA \ पुस्तकालय \'। –