2016-07-31 11 views
6

मेरे पास एक भंडार है जिसमें दो सबमिड्यूल हैं। Git जब मैं git submodule init या git submodule update चलाने शिकायत कर रहा है, तो निम्न त्रुटि के साथ:गिट इंडेक्स पुराने सबमुड्यूल पथ पर लटक रहा है?

fatal: no submodule mapping found in .gitmodules for path 'AppName.xcodeproj/..Vendor/AFNetworking'

मेरे submodules एक ही निर्देशिका में सभी नहीं थे, और मैं इस परियोजना को साफ करने का फैसला किया। मुझे Vendor नामक एक निर्देशिका होती थी जिसमें मेरे कुछ सबमिड्यूल शामिल थे लेकिन मैंने गिट से सबमिशन को हटाने के लिए here निर्देशों का पालन किया। फिर, मैंने submodules नामक एक नई निर्देशिका में submodules दोबारा जोड़ा।

मेरे submodules में से एक AFNetworking लाइब्रेरी है, जिसे मैंने प्रारंभिक विक्रेता निर्देशिका में एक सबमिशन के रूप में जोड़ा था। मैंने इसे थोड़ी देर पहले हटा दिया और साफ प्रक्रिया के हिस्से के रूप में इसे फिर से जोड़ा। ऐप बस ठीक बनाने लग रहा था, और मेरे git submodule आदेश सही तरीके से काम कर रहे थे। अब, जब मैं एक अलग मशीन पर जांच करता हूं, तो ऊपर वर्णित अनुसार यह विफल रहता है।

मेरे .gitmodules फ़ाइल इस तरह दिखता है:

[submodule "submodules/AFNetworking"] 
    path = submodules/AFNetworking 
    url = https://github.com/AFNetworking/AFNetworking.git 
[submodule "submodules/LNPopupController"] 
    path = submodules/LNPopupController 
    url = https://github.com/MosheBerman/LNPopupController.git 

यह सामान्य लगता है, के रूप में Git जानता है, जहां मेरी मॉड्यूल हैं, और सब कुछ ठीक होना चाहिए। एक ही मेरी .git/config फ़ाइल का सच है:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = true 
[remote "origin"] 
    url = [email protected]:MosheBerman/theshmuz.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[submodule "submodules/AFNetworking"] 
    url = https://github.com/AFNetworking/AFNetworking.git 

त्रुटि सूक्ष्म है, और मुझे यह महसूस करने के लिए के लिए यह कुछ समय लिया, लेकिन मैंने देखा त्रुटि संदेश का संदर्भ देता है वर्षVendor निर्देशिका, जिस पर अब मौजूद।

मैंने बिल्ली के आउटपुट को टेक्स्ट फ़ाइल में और टेक्स्ट एडिटर का उपयोग करके ./git/index खोला। निश्चित रूप से, AppName.xcodeproj/../Vendor/AFNetworking/ सूचकांक में प्रकट होता है। क्या यह एक खराब गिटलिंक हो सकता है? मैं इसे कैसे साफ कर सकता हूं ताकि मैं अपना रेपो सामान्य रूप से प्रारंभ और निर्माण कर सकूं?

उत्तर

1

मैं रूट निर्देशिका से सूचकांक से पहले AppName.xcodeproj युक्त, जैसे इतना से कैश की गई संदर्भ को हटाने की कोशिश की थी:

git rm --cached /Vendor/AFNetworking

तो, मैं फ़ोल्डर पदानुक्रम निर्मित और मैं भी मैं /Vendor/AFNetworking. अंदर एक डमी फ़ाइल जोड़ने की कोशिश की Vendor के अंदर "AFNetworking" नामक फ़ाइल जोड़ने का प्रयास किया। उन फ़ाइलों को जोड़ना और फिर निकालना चाल नहीं था।

मैंने इस समस्या पर एक और नज़र डाली और a blog post (link) पाया जो सूचकांक का निरीक्षण करने का सही तरीका बताता है। ऐसा लगता है कि मेरी सूचकांक उस में वर्ष submodule के लिए अजीब संदर्भ था:

AppName.xcodeproj/../Vendor/AFNetworking.

समाधान सूचकांक से ठीक वही प्रविष्टि के साथ फ़ाइल को हटाने के लिए है, इसलिए की तरह था:

git rm --cached AppName.xcodeproj/../Vendor/AFNetworking

तब मैं सफलतापूर्वक git submodule update चलाने में सक्षम था। ऐसा लगता है कि इंडेक्स हमेशा यूनिक्स फ़ाइल-सिस्टम रिश्तेदार पथ से मेल नहीं खाता है, लेकिन यह कुछ मामलों में अधिक विशिष्ट हो सकता है। प्रो गिट बुक में कुछ जानकारी थी (प्रिंट अध्याय 9 संस्करण, Chapter 10 online में) जिसने मुझे इस पर संदेह करने का नेतृत्व किया, लेकिन यह मेरे लिए ब्लॉग पोस्ट ले गया कि यह समझने के लिए कि इंडेक्स को कैसे खोलें।

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