2011-08-30 17 views
15

प्रतिबद्ध निम्नलिखित परियोजना लेआउट मान लिया जाये कि एक विशिष्ट पर यह "ठंड": -समझौता Git submodule और हैश या संस्करण

mainrepo_git 
    |____ .git 
    |____ .gitmodules 
    |____ proj   <------- directory containing the code files for mainrepo 
      |____ 3rdpartysourcecode <-- directory containing upstream open source code 
      |  |____ .git 
      |  |____ 3rdpartyfiles 
      | 
      |____ mainrepofilesanddirectories 

mainrepo_git स्रोत कोड मैं के लिए सीधे तौर पर जिम्मेदार हूँ में शामिल है। मैंने पहुंच को पढ़/लिख लिया है और मैं जो रिमोट गिट रिपोजिटरी प्रबंधित करता हूं उसे सीधे धक्का और खींच सकता हूं।

mainrepo_git अंदर नेस्ट एक निर्देशिका जो मैं 3rdpartysourcecode नामित है। यह तृतीयpartysourcecode निर्देशिका वास्तव में एक और गिट रेपो (जिसे आमतौर पर "गिट सबमिशन" के रूप में भी जाना जाता है) है जो अन्य डेवलपर्स द्वारा प्रबंधित ओपन सोर्स तृतीय पक्ष गिट रिपॉजिटरी को इंगित कर रहा है। मैंने केवल इसके लिए पहुंच पढ़ी है। कोई लेखन पहुंच नहीं है।

क्या मेरे मुख्य भंडार में किए गए प्रतिबद्धता के संबंध में गिट सबमिशन का एक विशिष्ट प्रतिबद्ध हैश 'फ्रीजिंग' का कोई तरीका है?

उदाहरण के लिए

, अगर मैं पर हूँ (या मैं करने के लिए वापस) a12ucak मेरी mainrepo में प्रतिबद्ध है, मेरे Git submodule भी जो मैं a12ucak प्रतिबद्ध करने के लिए टाई एक विशिष्ट संस्करण में वापसी हो जाता है? और जब मैं b349jdsak पर स्विच करने के लिए स्विच करता हूं, तो मेरा गिट सबमिशन भी उस संस्करण पर वापस आ जाता है जिसे मैं b349jdsak से जोड़ता हूं?

तो मेरा प्रश्न है: गिट सबमिशन में संबंधित प्रतिबद्धता के साथ मुख्य रेपो में एक विशिष्ट प्रतिबद्धता के बीच एक लिंक बनाने का एक तरीका है? इस तरह से जब मैं मुख्य गिट रेपो में उस विशिष्ट प्रतिबद्धता की जांच करता हूं, तो गिट सबमिशन में संबंधित प्रतिबद्धता भी चेकआउट होगी।

उत्तर

11

फ्रीजिंग submodules का पूरा बिंदु है। आपको वास्तव में एक ट्यूटोरियल पढ़ना चाहिए। संक्षेप में, git add 3rdpartysourcecode (महत्वपूर्ण कोई पिछला स्लैश नहीं है!) एक प्रतिबद्धता ताले के बाद सुपरमॉड्यूल प्रतिबद्धता पर वर्तमान में चेक आउट सबमिशन प्रतिबद्धता है। फिर बाद में आप उस संशोधन को देखने के लिए git submodule update का उपयोग करें।

+2

सही। यह भी देखें http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194 – VonC

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