2010-10-24 8 views
21

मैं अपने प्रोजेक्ट का एक हिस्सा (उप-निर्देशिका में) के रूप में एक मौजूदा परियोजना (GitHub पर आयोजित) को शामिल करने की है, जबकि इतिहास और कहा कि परियोजना अपडेट करने की क्षमता को बनाए रखने के लिए करना चाहते हैं। मैंने पाया कि वहाँ के बारे में तीन दृष्टिकोण हो सकता है:,गिट/गिटहब: बाहरी कोड के लिए फोर्क, सबट्री मर्ज या सबमिशन?

  1. कांटा मूल परियोजना उप-निर्देशिका में मूल सामग्री के लिए कदम और मेरे GitHub रेपो के लिए यह धक्का।
  2. एक नया रेपो Init, एक सबट्री मौजूदा रेपो के साथ विलय और मेरे GitHub रेपो के लिए धक्का है।
  3. क्लोन मौजूदा रेपो, एक नया मुख्य रेपो बनाने के लिए, एक submodule, धक्का के रूप में मुख्य एक में क्लोन रेपो डाल दिया।

(1) संस्करण गिटहब में बेहतर हो सकता है क्योंकि वे शायद स्रोत साझा कर सकते हैं। लेकिन तार्किक रूप से मेरी परियोजना मौजूदा एक कांटा नहीं है। बल्कि मौजूदा एक मॉड्यूल है। साथ ही मुझे यकीन नहीं है कि मौजूदा कोड को उपनिर्देशिका में ले जाने से समस्याएं नहीं आ सकती हैं। मैं शायद (2) संस्करण पसंद करूंगा क्योंकि केवल एक रेपो है। (3) को कई रिपो के साथ काम करने की आवश्यकता होगी लेकिन तर्कसंगत रूप से मेरी स्थिति के सबसे नज़दीक है।

मैं इस काफ़ी शोध किया है, लेकिन मैं निश्चित रूप से यकीन नहीं है। इस स्थिति में आप क्या सलाह देंगे? आपका अग्रिम में ही बहुत धन्यवाद!

उत्तर

7

दो परियोजनाओं (GitHub पर एक, और तुम्हारा) के विकास के जीवन चक्र अलग हैं, तो submodule दृष्टिकोण बेहतर है।
आईई: यदि आप अन्य गिटहब परियोजना को बदलने के लिए व्यवस्थित रूप से बिना अपनी परियोजना को बदलते हैं, तो आपको सबमिशन दृष्टिकोण पर विचार करना चाहिए।

बहरहाल, यह लागू करने के लिए, आप का एक संयोजन की आवश्यकता होगी (1) और (3):

  • अगर आप (धक्का) GitHub परियोजना के लिए योगदान नहीं कर सकते हैं सीधे, आप इसे कांटा करने के लिए की जरूरत है (1)।
  • तो आपको उस परियोजना को अपने प्रोजेक्ट (3) में एक सबमिशन के रूप में संदर्भित करने की आवश्यकता है।

यह जब तुम कि submodule को अद्यतन करने और इसके लिए विशिष्ट धक्का बनाने के लिए ("true nature of submodules" में वर्णित है) अनुमति देता है, आप GitHub परियोजना में से एक विशिष्ट संशोधन का उल्लेख करने की अनुमति देगा।
लेकिन एक बार आप submodule अद्यतन किया है, मत भूलना, अपनी परियोजना (जो submodule के लिए "जनक परियोजना" है) के लिए प्रतिबद्ध करने के क्रम submodule अब आप संदर्भित कर रहे हैं के नए संशोधन को पंजीकृत करने में।

+1

मुझे नहीं लगता कि अगर आपको सबमिशन बदलने की आवश्यकता नहीं है तो कांटे की सख्ती से आवश्यकता है, है ना? – iwein

+1

@iwein: ठीक है, लेकिन ओपी ने स्पष्ट रूप से उल्लेख किया है कि "इतिहास को बनाए रखने और उस परियोजना को अद्यतन करने की क्षमता": यानी उसे उस सबमिशन को अपडेट करने की आवश्यकता है। इसलिए एक कांटा सहित मेरे प्रस्ताव। – VonC

+0

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

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