Funziona con le nostre librerie che eseguono GIT v1.7.1, dove abbiamo un repository di pacchetti DEV e un repository di pacchetti LIVE. I repository stessi non sono altro che una shell per impacchettare le risorse per un progetto. tutti i sottomoduli.
Il LIVE non viene mai aggiornato intenzionalmente, tuttavia possono verificarsi file cache o incidenti, lasciando il repository sporco. Anche i nuovi sottomoduli aggiunti al DEV devono essere inizializzati all'interno di LIVE.
Repository dei pacchetti in DEV
Qui vogliamo estrarre tutte le modifiche a monte di cui non siamo ancora a conoscenza, quindi aggiorneremo il nostro repository di pacchetti.
# Recursively reset to the last HEAD
git submodule foreach --recursive git reset --hard
# Recursively cleanup all files and directories
git submodule foreach --recursive git clean -fd
# Recursively pull the upstream master
git submodule foreach --recursive git pull origin master
# Add / Commit / Push all updates to the package repo
git add .
git commit -m "Updates submodules"
git push
Repository dei pacchetti in LIVE
Qui vogliamo estrarre le modifiche che sono impegnate nel repository DEV, ma non le modifiche a monte sconosciute.
# Pull changes
git pull
# Pull status (this is required for the submodule update to work)
git status
# Initialize / Update
git submodule update --init --recursive
git reset --hard
non funziona, prova prima a specificare il ramo remoto congit reset --hard origin/<branch_name>
.