Ho un repository dotfiles. Voglio unirne un altro con i sottomoduli (prezto), quindi posso comodamente avere tutto in un repository senza l'inconveniente dei sottomoduli.
Come posso sottotree unire prezto nel mio repository dotfile con tutti i suoi sottomoduli?
Posso usare i sottomoduli, posso dividere e unire i sottotitoli nel modo "vecchio stile" o con il nuovo strumento sottotree git.
Non so proprio come fare questo caso specifico.
risposte:
2 per risposta № 1Alexander Mikhailian ha creato un copione per convertire tutti i sottomoduli in sottotitoli, dovresti essere in grado di adattarlo al tuo caso.
Presentando qui i passaggi:
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 "$namet$mpatht$murlt$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
Penso che il percorso più semplice per te sarebbe quello di applicare lo script sul prezto
repo e quindi rendere il repository una sottostruttura in dotfiles
repository.
Dopo aver eseguito lo script in prezto
repository utilizzerai quanto segue passaggi per creare la sottostruttura:
Aggiungi un nuovo URL remoto che punta a
prezto
repo neldotfiles
.git remote add -f prezto user@example.com:path/prezto.git
Unisci il
prezto
progetto nel localedotfiles
progetto. Questo non cambia nessuno dei tuoi file localmente, ma prepara Git per il passaggio successivo.git merge -s ours --no-commit prezto/master
Crea una nuova directory chiamata
prezto-subdir
(o qualunque cosa ti piaccia), e copia la cronologia Git diprezto
proiettarci dentro.git read-tree --prefix=prezto-subdir/ -u prezto/master
Impegnare le modifiche per tenerle al sicuro.
git commit -m "Subtree merged in prezto"