यदि मैं एक सबमिशन जोड़ता हूं जो वर्तमान में मौजूद नहीं है, तो .git/config
पर कोई सबमिशन जानकारी नहीं जोड़ा गया है।एक मौजूदा रिपो को एक सबमिशन के रूप में क्यों जोड़ता है .git/config को संशोधित करता है?
$ mkdir testing
$ cd testing
$ git init
$ git submodule add [email protected]:submodule.git
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
हालांकि, अगर मैं एक रेपो वर्तमान में एक submodule के रूप में मौजूद है कि जोड़ने के लिए, यूआरएल .git/config
में जोड़ा जाता है:
$ mkdir testing
$ cd testing
$ git init
$ git clone [email protected]:submodule.git
$ git submodule add [email protected]:submodule.git
$ cat .git/config
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
[submodule "submodule"]
url = [email protected]:submodule.git
मैं मान लिया है कि दोनों ही मामलों में, git submodule add
होता केवल .gitmodules
संशोधित , और git submodule init
ने प्रोजेक्ट के .git/config
को अपडेट किया होगा।
क्यों .git/config
दूसरे मामले में संशोधित है लेकिन पहले नहीं? क्या कोई इस व्यवहार के लिए तर्कसंगत समझा सकता है?
मार्क में तय किया गया था, के लिए सूचक के लिए धन्यवाद कि प्रतिबद्ध (कम से कम यह पता चलता है इस व्यवहार जानबूझकर है)। हालांकि, मैं अभी भी उलझन में हूं जब आपने कहा "जब तक सबमिशन अपडेट नहीं किया जाता है तब तक इसे क्लोन नहीं किया जाता है"। ऊपर दिए गए पहले मामले में, 'गिट सबमिशन [email protected] जोड़ें: submodule.git' वास्तव में सुपर-प्रोजेक्ट में क्लोन 'submodule.git' क्लोन करें। उपर्युक्त उदाहरणों में, मैंने चलाया गया एकमात्र सबमिशन कमांड 'गिट सबमिशन एड' था, और दोनों मामलों में मैंने अपने सुपर-प्रोजेक्ट में क्लोन submodule.git के साथ समाप्त किया। केवल अंतर यह है कि '.git/config' बाद में कैसा दिखता है, और केस # 1 को पंजीकरण के लिए' गिट सबमिशन इनिट 'की भी आवश्यकता होती है। – cdwilson
यह व्यवहार मुझे समझ में आएगा, अगर पहले मामले में, 'गिट सबमिशन एड' ने रिपॉजिटरी को तब तक क्लोन नहीं किया जब तक कि सबमिशन पंजीकृत नहीं हुआ ('गिट सबमिशन इनिट') और अपडेट किया गया (' गिट सबमिशन अपडेट')। हालांकि, चूंकि उपरोक्त # 1 वास्तव में क्लोन 'submodule.git' क्लोन करता है, और पंजीकरण के लिए 'गिट सबमिशन इनिट' की आवश्यकता होती है, तो मैं पंजीकरण करने के लिए केस # 2 को 'गिट सबमिशन इनिट' की आवश्यकता होगी। मुझे यकीन है कि यहां कुछ ऐसा है जो मुझे याद आ रहा है, लेकिन अभी मुझे समझ में नहीं आता कि एक विसंगति क्यों है। – cdwilson
@cdwilson: अच्छा बिंदु, मैं प्रश्न का उत्तर देने के लिए अपनी गड़बड़ी में 'गिट सबमिशन एड' के व्यवहार का गलत वर्णन कर रहा था। मैं अपना जवाब सही कर दूंगा। आप इसके बारे में उचित उत्तर के लिए गिट मेलिंग सूची पर पूछ सकते हैं - मुझे संदेह है कि यह एक बग है, लेकिन शायद मुझे कुछ याद आ रही है। –