2015-12-05 21 views
10

Nokta dosyası depom var. Altmodüller (prezto) ile bir diğerini birleştirmek istiyorum, bu yüzden alt modüllerin rahatsızlık vermeden her şeyi tek bir depoda rahatça alabiliyorum.Alt modüller ile git deposunu alt ağaç birleştirme ile birleştirmek nasıl?

Tüm alt modülleriyle dotziles depomda prezto'yu nasıl bir alt ağaç olarak birleştirebilirim?

Alt modülleri kullanabilirim, alt bölümleri "eski moda" şekilde veya yeni git alt ağaç aracıyla ayırabilir ve birleştirebilirim.

Bu özel durumu nasıl yapacağımı bilmiyorum.

+0

Neden dotfiles Depodaki bir alt ağaç olarak her alt modülü korumak değil? – dan

+0

evet yapmak istediğim bu. Alt modüllerden kurtulmak ve bir bütün olarak tek bir depoyu korumak istiyorum. – kissgyorgy

cevap

2

Alexander Mikhailian, tüm alt modülleri subtrees olarak dönüştürmek için script'u yarattı, siz de bunu durumunuza uyarlamanız gerekir.

burada sunma adımlar:

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 

senin için en kolay yol prezto repo senaryoyu uygulayıp sonra Repo dotfiles Depodaki bir alt ağacı yapmak olacağını düşünüyorum.

prezto depoda scriptinizi sonra kullanacağınız alt ağacı oluşturmak için steps aşağıdaki:

  1. dotfiles içine prezto repoya işaret eden yeni bir uzaktan URL ekleyin.

    git remote add -f prezto [email protected]:path/prezto.git 
    
  2. yerel dotfiles projeye prezto projeyi Birleştirme. Bu, dosyalarınızın hiçbirini yerel olarak değiştirmez, ancak sonraki adım için Git'i hazırlar.
    git merge -s ours --no-commit prezto/master 
    
  3. yeni prezto-subdir denilen dizin (ya da gibi) oluşturun ve içine prezto projesinin Git geçmişini kopyalayın.

    git read-tree --prefix=prezto-subdir/ -u prezto/master 
    
  4. Onları güvende tutmak için değişiklikleri tamamlayın.

    git commit -m "Subtree merged in prezto" 
    
İlgili konular