2013-05-17 9 views
6

की अपने आप में कुछ फाइलों के साथ दो Git संग्रह मान लेते हैं:क्या मैं उपनिर्देशिका से उप-विलय विलय कर सकता हूं?

ProjectA 
+ a 
+ b 

ProjectB 
+ foo/x 
+ foo/y 
+ bar/z 

अब मैं PROJECTA में ProjectB से निर्देशिका foo शामिल करना चाहते हैं।

जहां तक ​​मैं समझता हूँ कि जब मैं git subtree addprefix कर रास्ता है कि यह प्राप्त भंडार में होना चाहिए है, इसलिए मैं के साथ खत्म होगा जब मैं

git subtree add --prefix=project_b --squash URL_of_ProjectB 

कर

ProjectA 
+ a 
+ b 
+ project_b 
    + foo/x 
    + foo/y 
    + bar/z 

क्या मैं किसी भी तरह से निर्दिष्ट कर सकता हूं कि मैं केवल लेआउट प्राप्त करने के लिए foo प्राप्त करना चाहता हूं?

ProjectA 
+ a 
+ b 
+ project_b 
    + x 
    + y 

उत्तर

5

मैं इस git subtree के साथ पूरा किया नहीं किया जा सकता है।

git remote add b <URL_TO_B> 
git fetch b 
git checkout -b b_master b/master 

केवल foo युक्त b के इतिहास को फिर से लिखें:: शायद git filter-branch तुम क्या जरूरत है

git filter-branch --prune-empty --subdirectory-filter foo b_master 

या git subtree split

git subtree split -P foo --branch foo 

का उपयोग करें और सबट्री के रूप में के रूप में जोड़ने

git subtree add --prefix=project_b --squash b_master or foo 
+0

क्या यह ProjectA में ProjectA में और परिवर्तनों में विलय की प्रक्रिया को बदलता है? मैंने सोचा कि मेरा परिदृश्य बिल्कुल 'गिट सबट्री' के लिए है, लेकिन यदि ऐसा नहीं है, तो इसके साथ * क्या * पूरा किया जा सकता है? शायद मैं इसे बेहतर तरीके से अनुकूलित करने के लिए अपना फ़ाइल लेआउट बदल सकता हूं। – AndreKR

+0

हां, जब भी आप ProjectB से ProjectA में परिवर्तनों को मर्ज करना चाहते हैं, तो आपको फ़िल्टर शाखा चरण फिर से करना होगा। 'गिट सबट्री' का मैन पेज 'गिट स्प्लिट' कमांड बताता है जो मैंने दिया 'फ़िल्टर-शाखा' कमांड के समान है। लेकिन यदि आप अपना लेआउट बदल सकते हैं तो शायद एक अलग भंडार में 'foo' के अवधारणा को निकालना बेहतर होगा और इसे दोनों परियोजनाओं के लिए एक उप-योग के रूप में जोड़ें। शायद यह बेहतर है क्योंकि बी बी किसी प्रकार का मुक्ति है? – gregor

+0

यह समस्या है, यह वास्तव में नहीं है। अगर ऐसा होता, तो मैं इसे एक सबमिशन बनाउंगा। यह कुछ कोड है जो दो परियोजनाओं के बीच साझा किया जाता है ... देशों की सूची, कुछ टेम्पलेट इत्यादि। – AndreKR

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