2015-12-05 11 views
10

मेरे पास एक dotfiles भंडार है। मैं submodules (prezto) के साथ एक और विलय करना चाहता हूं, इसलिए मैं आसानी से सबकुछ में एक सबमिशन में सबकुछ की असुविधा के बिना सब कुछ कर सकता हूं।subtree विलय के साथ submodules के साथ एक गिट भंडार कैसे विलय करें?

मैं अपने डॉटफाइल भंडार में अपने सभी submodules के साथ prezto कैसे विलय कर सकते हैं?

मैं submodules का उपयोग कर सकते हैं, मैं subtrees विभाजित और "पुराने फैशन" तरीके या नए गिट subtree उपकरण के साथ विलय कर सकते हैं।

मुझे नहीं पता कि यह विशिष्ट मामला कैसे करें।

+0

dotfiles भंडार में एक सबट्री के रूप में प्रत्येक submodule क्यों नहीं बनाए रख? – dan

+0

हां यही वह है जो मैं करना चाहता हूं। मैं submodules से छुटकारा पाने के लिए और पूरी तरह से केवल एक भंडार बनाए रखना चाहता हूँ। – kissgyorgy

उत्तर

2

अलेक्जेंडर मिखाइलियन ने script को उपट्रीज़ में सभी submodules रूपांतरित करने के लिए बनाया है, तो आप इसे अपने मामले में अनुकूलित करने में सक्षम होना चाहिए।

यहां पेश कदम:

cat .gitmodules |while read i 
do 
    if [[ $i == \[submodule* ]]; then 
    mpath=$(echo $i | cut -d\" -f2) 
    read i; read i; 
    murl=$(echo $i|cut -d\ -f3) 
    mcommit=`eval "git submodule status ${mpath} |cut -d\ -f2"` 
    mname=$(basename $mpath) 
    echo -e "$name\t$mpath\t$murl\t$mcommit" 
    git submodule deinit $mpath 
    git rm -r --cached $mpath 
    rm -rf $mpath 
    git remote add $mname $murl 
    git fetch $mname 
    git branch _$mname $mcommit 
    git read-tree --prefix=$mpath/ -u _$mname 
fi 
done 
git rm .gitmodules 

मुझे लगता है कि आप के लिए सबसे आसान मार्ग prezto रेपो पर स्क्रिप्ट लागू करने के बाद रेपो dotfiles भंडार में एक सबट्री बनाने के लिए किया जाएगा।

prezto भंडार में स्क्रिप्ट निष्पादित करने के बाद आप का उपयोग करेगा निम्नलिखित steps सबट्री बनाने के लिए:

  1. dotfiles में prezto रेपो की ओर इशारा करते एक नई दूरस्थ URL जोड़ें।

    git remote add -f prezto [email protected]:path/prezto.git 
    
  2. स्थानीय dotfiles परियोजना में prezto परियोजना मर्ज करें। यह आपकी किसी भी फाइल को स्थानीय रूप से नहीं बदलता है, लेकिन यह अगले चरण के लिए गिट तैयार करता है।

    git merge -s ours --no-commit prezto/master 
    
  3. एक नया निर्देशिका prezto-subdir कहा जाता है (या जो भी आप की तरह) बनाएँ, और इसे में prezto परियोजना के Git इतिहास कॉपी।

    git read-tree --prefix=prezto-subdir/ -u prezto/master 
    
  4. उन्हें सुरक्षित रखने के लिए परिवर्तन प्रतिबद्ध होते हैं।

    git commit -m "Subtree merged in prezto" 
    
संबंधित मुद्दे