मुझे submodules के समान कुछ चाहिए, लेकिन निर्भरता के रूप में मुख्य भंडार के बाहर मौजूद है।किसी अन्य गिट भंडार की साझा निर्भरता के रूप में एक गिट भंडार कैसे जोड़ें?
यहाँ समस्या है:
मैं एक सीएडी उपकरण (CADSOFT ईगल) के लिए डिजाइन फाइलों का प्रबंधन करने के लिए Git उपयोग करने के लिए (एक वास्तव में अजीब तरीके से) कोशिश कर रहा हूँ, और मैं एक मुश्किल समय लगाना हो रही है सीएडी उपकरण की साझा लाइब्रेरी पर प्रत्येक प्रोजेक्ट की निर्भरता को प्रबंधित करने के लिए गिट सबमिड्यूल का उपयोग करने का कोई तरीका है या नहीं।
मैं इस तरह एक फ़ोल्डर संरचना का उपयोग कर रहा:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
Proj1/
.git/
<design files>
इस मामले में, यह प्रत्येक परियोजना के लिए एक Git submodule के रूप में eagle.git रिपोजिटरी जोड़ें मतलब नहीं है।
हालांकि, मुझे अभी भी "eagle.git" भंडार की वर्तमान स्थिति को स्नैपशॉट करने का एक तरीका चाहिए ताकि यदि पुस्तकालय भविष्य में अपडेट किया गया हो, तो इसे लाइब्रेरी फ़ाइलों के विशिष्ट संशोधन तक पहुंचने के लिए वापस ले जाया जा सकता है प्रोजे [x] प्रतिबद्ध होने पर इस्तेमाल किया जा रहा था।
आदर्श रूप में, मैं की तरह कुछ करना चाहते हैं निम्नलिखित:
~/eagle/ <-- Main library used by multiple projects
.git/
<library files>
~/projects/ <-- Projects folder
Proj0/
.git/
<design files>
**eagle** <-- something that acts like a submodule
but which actually points to ~/eagle/
Proj1/
.git/
<design files>
**eagle** <-- something that acts like a submodule
but which actually points to ~/eagle/
मैं करने में सक्षम होना चाहते हैं:
cd ~/projects/Proj0
git submodule update
और ~/ईगल/निर्देशिका स्वचालित रूप से करने के लिए वापस रोल है संशोधन Proj0 में चेक किया गया।
कोई भी गिट में कुछ भी जानता है जो इस तरह के व्यवहार की अनुमति दे सकता है?
क्या आप स्पष्टीकरण दे सकते हैं कि क्यों आपके लिए सबमिड्यूल काम नहीं करेंगे? यह मुझे लगता है जैसे submodules बिल्कुल वही है जो आपको चाहिए। –
सीएडी उपकरण (ईगल) के लिए लाइब्रेरी को "देखने" के लिए, इसे ईगल की पथ सेटिंग्स में जोड़ा जाना है। यदि मैंने प्रत्येक प्रोजेक्ट के लिए एक सबमिशन के रूप में "ईगल" लाइब्रेरी रेपो जोड़ा है, तो मुझे प्रत्येक प्रोजेक्ट के सबमिशन लाइब्रेरी पथ ईगल की पथ सेटिंग्स मैन्युअल रूप से जोड़ना होगा, जिससे ईगल में "ईगल" लाइब्रेरी की [x] प्रतियां दिखाई देगी पुस्तकालय प्रबंधक सीएडी उपकरण में उन अलग-अलग प्रतियों का क्या प्रबंधन और प्रबंधन करना पता लगाना एक दुःस्वप्न होगा। साथ ही, लाइब्रेरी प्रोजेक्ट फ़ाइलों की तुलना में परिमाण के आदेश हो सकती है, इसलिए डिस्क पर चारों ओर बैठे [x] प्रतियों की प्रतियां वास्तव में अपर्याप्त लगती हैं। – cdwilson
इस बारे में सोचने का एक सहायक तरीका एक समानता के माध्यम से है। आइए कहें ईगल सीएडी उपकरण एक कारखाना है जो एक समय में एक विजेट बना सकता है। आइए कहें कि प्रत्येक प्रोजेक्ट [x] .git repo को कुछ विजेट [x] फैक्ट्री बनाने के लिए एक विनिर्माण ब्लूप्रिंट [x] द्वारा दर्शाया जाता है। Eagle.git रेपो को उस विजेट [x] बनाने के लिए आवश्यक कारखाने सेटअप (मशीनों, श्रमिकों, कच्चे माल) द्वारा दर्शाया जाता है। – cdwilson