2011-01-18 3 views
5

में समकक्ष समकक्ष मैं अपने सीवीएस भंडार को गिट करने के लिए संक्रमण करने की कोशिश कर रहा हूं और थोड़ी देर के लिए इस अंतिम मुद्दे पर फंस गया हूं।सीवीएस एम्परसेंड मॉड्यूल गिट

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

मैंने धागे को देखा है जो (svn: externals) के संदर्भ में ऐसा करने के लिए subtree विलय या submodules की सलाह देते हैं। यह काम नहीं करेगा क्योंकि:

  • उपट्री विलय स्पष्ट रूप से आपको बाहरी रिपोज़ को आसानी से वापस/अपडेट करने की अनुमति नहीं देता है।

  • submodules अभी भी आपको प्रत्येक सबमिशन मैन्युअल रूप से पुश/पुल करने की आवश्यकता है। मेरे पास बड़ी संख्या में सबमिड्यूल हैं और मेरे परिवर्तनों को धक्का देने के लिए हर एक में जा रहा है और यह चूक हो सकती है क्योंकि बदलावों को भूलना भूल जाएगा।

बस स्पष्ट होना, मैं एक Git भंडार है कि उप निर्देशिकाओं के रूप में अन्य Git संग्रह शामिल है, और एक आदेश के साथ एक ही समय में प्रतिबद्ध करने के लिए/धक्का/उन सभी को खींच सक्षम होने के लिए करना चाहते हैं।

+2

सबमोड्यूल आप जो चाहते हैं उसके करीब थोड़ा बनने के रास्ते पर हैं - 'गिट fetch' अब सबमिशन-जागरूक है, और मुझे यकीन है कि और अधिक आ जाएगा। हालांकि, submodules में प्रतिबद्ध अपने इच्छित उद्देश्य से थोड़ा आगे है। – Cascabel

+1

ऐसा लगता है कि आप सही हैं, सबमिड्यूल जो मैं ढूंढ रहा हूं, लेकिन वे अभी तक काफी नहीं हैं। मैं आश्चर्यचकित हूं हालांकि मुझे लगा कि यह वर्कफ़्लो काफी आम है और गिट थोड़ी देर के लिए आसपास रहा है। – paulsc

+1

@ पाउल्स: मुझे लगता है कि थोड़ा अलग कुछ आम है: सुपरप्रोजेक्ट के स्वतंत्र रूप से उपप्रोजेक्ट पर काम करना, फिर अब और फिर सुपरप्रोजेक्ट को उपप्रोजेक्ट के एक नए संस्करण में अपडेट करना। – Cascabel

उत्तर

1

यह बहुत अधिक गिट है। यदि वे अलग परियोजनाएं हैं, तो वे अलग-अलग भंडारों में हैं।

हालांकि, repo उपकरण जैसे कि Android के रूप में परियोजनाओं द्वारा प्रयोग किया जाता है Git के ऊपर एक परत है कि निर्भर परियोजनाएं हैं जो अलग-अलग स्थानों से आ सकती है की एक बड़ी संख्या शामिल हैं प्रदान करने के लिए और आप उन सभी की स्थानीय शाखाओं में से एक कार्यप्रवाह की अनुमति देता है संशोधन नियंत्रण के माध्यम से (जो परियोजना द्वारा विभिन्न स्थानों पर जा सकता है)।

यह एक परत है और यदि आप सटीक गिट अनुभव की उम्मीद कर रहे हैं, तो आपको वह नहीं मिलेगा। आप किसी भी उपप्रोजेक्ट में अपने मानक गिट टूल्स का उपयोग कर सकते हैं, लेकिन शीर्ष स्तर पर, आप समन्वय के लिए एक अलग टूल का उपयोग कर रहे हैं।

+0

ऐसा लगता है कि हमारे वर्कफ़्लो असामान्य नहीं होंगे, इसलिए मैं इस बात से उलझन में हूं कि अन्य लोग इससे कैसे निपटते हैं। वे अलग परियोजनाएं हैं, लेकिन यह पर्याप्त मात्रा में कोड साझा करती है। इसलिए प्रत्येक प्रोजेक्ट को 'घटकों' में विभाजित किया जाता है जो आदर्श रूप से प्रति घटक एक गिट भंडार में मैप किया जाएगा। चीजों को परमाणु रूप से करने की आवश्यकता (यानी कई घटक/गिट रिपोज़ एक बार में) किसी भी अलग-अलग घटकों में से किसी भी बदलाव को याद नहीं करना चाहते हैं। – paulsc

+0

इसके अलावा रेपो दिलचस्प लगता है - अभी एंड्रॉइड के लिए विशिष्ट है। ऐसा लगता है कि इस वर्कफ़्लो को पूरा करने का तरीका अब यह गिट के शीर्ष पर अपना खुद का रोल करने के लिए है। – paulsc

+0

यह एंड्रॉइड के लिए विशिष्ट नहीं है। मैं इसे अब किसी अन्य प्रोजेक्ट में उपयोग कर रहा हूं। परियोजनाएं अलग हैं और कंटेनर स्वयं विभिन्न शाखाओं पर संबंधित संस्करणों को जोड़ सकता है। यदि आप ऐसा नहीं करते हैं, तो आप दो परियोजनाओं को अपने साझा प्रोजेक्ट में विरोधाभासी परिवर्तन पेश करते समय परेशानी में भागने जा रहे हैं। – Dustin

0

यदि मैं आपका प्रश्न सही ढंग से समझ गया, तो आपको git submodules की आवश्यकता है।

0

मेरा git-subtree प्रोजेक्ट एक उप-विलय विलय करने के बाद परिवर्तनों को फिर से निकालना संभव बनाता है। बहुत से लोगों को यह गिट-सबमिशन और सबट्री विलय के बीच दोनों दुनिया के सर्वश्रेष्ठ होने का पता चलता है।