2013-02-13 31 views
16

मेरे पास एक प्रोजेक्ट है जो कुछ तृतीय पक्ष पुस्तकालयों का उपयोग करता है।गिट उपट्री: पूरे भंडार के बजाय केवल उप-स्रोत का उपयोग करें

MY_COOL_PROJECT 
    3rdParty 
     LIB_1 
     LIB_2 
    Source 
     MY_PROJECT 

पुस्तकालयों अलग खजाने में स्थित हैं: तो निर्देशिका संरचना की तरह कुछ है। तो, अगर मैं 3 पार्टी पुस्तकालयों के लिए एक Git भंडार का उपयोग करना चाहते मैं कर सकते हैं:

git subtree add --prefix 3rdParty/LIB_1 --squash http://My3rdPartyLibs.com/lib1.git master 

हालांकि, lib1.git भंडार के अंदर सिर्फ एक ही बिन फ़ोल्डर मैं की जरूरत है। इसमें दस्तावेज, उदाहरण इत्यादि जैसे फ़ोल्डर भी शामिल हैं। मैं अपने भंडार को केवल संपूर्ण भंडार के बजाय lib1/bin फ़ोल्डर के साथ "कनेक्ट" कैसे कर सकता हूं? क्या यह भी संभव है?

+1

काम कर रहा था आप विरल सबट्री के लिए एक समाधान मिला के लिए इस्तेमाल किया था? (वर्तमान उत्तर इसे पूरी तरह से हल नहीं कर रहा है) – inger

उत्तर

7

आम तौर पर, एक गिट रेपो पूरी तरह से क्लोन/लोड होने के लिए किया जाता है।

आप के लिए एक sparse checkout (Git1.7 +) जा सकते हैं, लेकिन आप किसी भी संशोधन करते हैं और उन लोगों के पीछे धकेलने के लिए आशय नहीं करते हों। this example देखें:

$ git init 
Initialized empty Git repository in /tmp/si-sandbox/.git/ 
(master) $ git config core.sparsecheckout true 
(master) $ echo message-store/ >> .git/info/sparse-checkout 
(master) $ git remote add origin git://github.com/iwein/Spring-Integration-Sandbox.git 
(master) $ git pull origin master 

OP user2070238reports:

यह कुछ परिवर्तनों के साथ काम किया।
वजह से, मैं submodule का उपयोग मैं

echo MY_FOLDER/* >> .git/info/modules/MY_MODULE/sparse-checkout 

और किसी कारण MY_FOLDER/ हिस्सा बिना *

+1

धन्यवाद, यह कुछ बदलावों के साथ काम करता है। वजह से, मैं submodule का उपयोग मैं 'गूंज MY_FOLDER का इस्तेमाल करना पड़ा/* >> .git/जानकारी/मॉड्यूल/MY_MODULE/विरल-checkout' और किसी कारण से MY_FOLDER/भाग के बिना काम नहीं कर रहा था * – user2070238

+0

@ user2070238 अति उत्कृष्ट। मैंने अधिक दृश्यता के उत्तर में आपकी टिप्पणी शामिल की है। – VonC

+1

मूल प्रश्न "गिट सबट्री" के बारे में था - इस जवाब में समाधान के अधिकांश आधे हिस्से में इसके बजाय स्पैर चेकआउट शामिल है? (शायद यहां तक ​​कि नहीं) – inger