2011-05-27 11 views
9

मेरे पास एक एचजी रिपोजिटरी है, जिसमें एचजी सब्रेस्पिटरी है, जिसमें कुछ गिट सबमिड्यूल हैं। (मैं इस पूरी तरह पागल लगता है, लेकिन यह गूगल कोड में SVN रेपोस साथ काम करना, bitbucket में GitHub में libs और मॉड्यूल में है। मैं कोड का उपयोग कर रहा स्वतंत्र रूप से लोगों को, मैं कौन हूँ के बारे में अपने निर्णय के बारे में शिकायत करने के लिए के एक समूह द्वारा उपलब्ध कराए गए संस्करण नियंत्रण - मैं जो चाहता हूं वह कोड है और मैं इसके लिए आभारी हूं)।क्यों हमेशा एक गिट सबमिशन प्रतिबद्ध करते हैं, भले ही यह नहीं बदला है?

एक छोटी सी "पेड़" इस परिदृश्य के बारे में:

+ hg repo 
    + hg subrepo 
    + git submodules 

जब मैं एचजी subrepository में एक फ़ाइल बदल सकते हैं और प्रतिबद्ध, यह सब Git submodules करता है, भले ही वे परिवर्तित नहीं किया गया। मैं hg status चलने के बाद, यह Git submodules बारे में कुछ भी दिखाई नहीं देता, लेकिन अगर मैं प्रतिबद्ध:

committing subrepository SUBREPO 

यह बहुत समस्याग्रस्त नहीं होगा, अगर मैं Git के एक समूह के साथ सिर्फ एक एचजी मुख्य रेपो उपयोग कर रहे थे submodules। समस्या निर्भर करता है जब मैं पहली बार एचजी भंडार में कोई परिवर्तन करने के: अब, जब मैं प्रतिबद्ध है, यह एचजी भंडार में और एचजी subrepository में करता है, के बाद से यह हमेशा करता Git submodules। तो अब, मेरे पास एक टिप्पणी है जिसे केवल पहले एचजी भंडार में और एचजी उपनिवेश में एक ही टिप्पणी के लिए डिजाइन किया गया था।

मैं इस इंटरमीमेंट committing subrepository SUBREPO से कैसे बचूं, मैं अपने एचजी रिपोजिटरी/सब्रेस्पिटरी पर गिट सबमिड्यूलर के साथ करता हूं? क्या यह एक बग है? क्या यह एक गिट डिज़ाइन है (हो सकता है कि गिट रिपोजिटरी हमेशा कम से कम एक "स्थिति" फ़ाइल या ऐसा कुछ जो हमेशा खींचने के बाद बदलती हो? मुझे गिट के साथ ज्यादा अनुभव नहीं है ...)

+6

अद्भुत रूप हास्यास्पद परिदृश्य कि मैं कभी नहीं आप 'एचजी ci -X" एचजी-suprepo-निर्देशिका "' कोशिश की – Andy

+0

अनुभव करना चाहते हैं के लिए +1? – jmg

+0

@jmg: मैंने इसे आजमाया नहीं है, क्योंकि मैं इस सबडोड्यूल को 'बहिष्कृत' न करने के कारण को समझना चाहता हूं। :) –

उत्तर

2

यहां तक ​​कि एक खींच जो कुछ भी गिट में फ़ाइलों को छूएगा ... अधिक विशेष रूप से .git/FETCH_HEAD फ़ाइल। मुझे याद नहीं है कि एचजी/मर्कुरियल कैसे करता है लेकिन मुझे एक ही चीज़ पर संदेह होगा। किसी भी मामले में, यदि यह एक खाली पुल है, तो फ़ाइल ही बदल नहीं है, केवल समय टिकट।

आप अपने Git/एचजी भंडार की एक सटीक प्रतिलिपि बनाकर इसकी पुष्टि कर सकते हैं, तो केवल एक में खींच। एक निर्देशिका तुलना उपकरण आपको बदली गई फाइल दिखाएगा।

अगर मुझे सही ढंग से मेरा एचजी याद है, तो hg status कमांड में विशेष रूप से सब-रिपॉजिटरीज़ में फ़ाइलें शामिल नहीं होंगी, इसलिए जो व्यवहार आप देख रहे हैं वह समझ में आता है।

+0

"यहां तक ​​कि एक पुल जो कुछ भी नहीं मिलता है, गिट में फ़ाइलों को छूएगा ... अधिक विशेष रूप से .git/FETCH_HEAD फ़ाइल" यह वही था जो मैं देखने की कोशिश कर रहा था। शायद गिट submodules होने के एचजी कार्यान्वयन ऐसा कुछ करता है जो इस फ़ाइल को बदलता है। मैं यह देखने के लिए डीबग करने जा रहा हूं कि क्या मैं समाधान के बारे में सोच सकता हूं! धन्यवाद! –

0

अगर वह मदद नहीं पता है, लेकिन Subrepository में, खंड 3.1 वे बताएं कि किस तरह subrepo बाहर रखा जाना चाहिए।

लेकिन मैं समझता हूँ कि आप इस संगठन में कोई बात कहने? क्या आप अपना पदानुक्रम फिर से कर सकते हैं?

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