Nota: questo è del 2009 e potrebbe essere stato buono allora, ma ora ci sono opzioni migliori.
Usiamo questo. Si chiama git-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
Basta inserirlo in una directory bin adatta (/ usr / local / bin). Se su Windows, potrebbe essere necessario modificare la sintassi per farlo funzionare :)
Aggiornare:
In risposta al commento dell'autore originale su come inserire tutti i HEAD di tutti i sottomoduli - questa è una buona domanda.
Sono abbastanza sicuro che git
non abbia un comando per questo internamente. Per fare ciò, dovresti identificare cosa è realmente HEAD per un sottomodulo. Potrebbe essere semplice come dire che master
è il ramo più aggiornato, ecc ...
Successivamente, crea un semplice script che procede come segue:
- verifica la presenza
git submodule status
di repository "modificati". Il primo carattere delle righe di output indica questo. Se un sub-repo viene modificato, potresti NON voler procedere.
- per ogni repository elencato, cd nella relativa directory ed esecuzione
git checkout master && git pull
. Controlla errori.
- Alla fine, ti suggerisco di stampare un display per indicare lo stato corrente dei sottomoduli - forse spingerli ad aggiungere tutto e impegnarsi?
Vorrei menzionare che questo stile non è proprio quello per cui sono stati progettati i sottomoduli git. In genere, vuoi dire "LibraryX" è alla versione "2.32" e rimarrà tale fino a quando non gli dirò di "aggiornare".
Questo è, in un certo senso, quello che stai facendo con lo script descritto, ma solo più automaticamente. È necessaria la cura!
Aggiornamento 2:
Se sei su una piattaforma Windows, potresti voler usare Python per implementare lo script in quanto è molto capace in queste aree. Se sei su unix / linux, allora suggerisco solo uno script bash.
Hai bisogno di chiarimenti? Pubblica un commento.