In realtà, una patch has been submitted in April 2009 per chiarire il ruolo gitmodule
.
Così ora la gitmodule documentation non include ancora:
Il file .gitmodules
, si trova nella directory di livello superiore di un albero di lavoro git, è un file di testo con una sintassi corrispondenti ai requisiti -Di linkgit: git-config 1.
[NUOVO]:
Poiché questo file è gestito da Git, tiene traccia dei record + dei sottomoduli di un progetto.
Le informazioni memorizzate in questo file vengono utilizzate come suggerimento per adescare la versione autorevole del record memorizzato nel file di configurazione del progetto.
Le modifiche dei record specifici dell'utente (ad esempio per tenere conto delle differenze negli URL dei sottoprogrammi dovuti a situazioni di rete) devono essere apportate al file di configurazione, mentre le modifiche dei record da propagare (ad esempio + a causa di un trasferimento della sorgente del sottomodulo) devono essere effettuate a questo file.
Questo praticamente conferma Jim's answer.
Se si segue questo git submodule tutorial, si vede è necessario un "git submodule init
" per aggiungere gli URL del repository modulo di .git/config.
"git submodule sync
" ha been added in August 2008 precisamente per semplificare tale compito quando l'URL cambia (specialmente se il numero di sottomoduli è importante).
Lo script associato con questo comando è abbastanza semplice:
module_list "[email protected]" |
while read mode sha1 stage path
do
name=$(module_name "$path")
url=$(git config -f .gitmodules --get submodule."$name".url)
if test -e "$path"/.git
then
(
unset GIT_DIR
cd "$path"
remote=$(get_default_remote)
say "Synchronizing submodule url for '$name'"
git config remote."$remote".url "$url"
)
fi
done
L'obiettivo rimane: git config remote."$remote".url "$url"
Che affetto dovrebbe git sincronizzazione modulo hanno? Lo sto facendo in modo errato in http://gist.github.com/120723, o sono errato nell'aspettare che .git/config sia cambiato da git submodule sync? –
Questo non sembra aggiornare .git/config, almeno in 1.7.1 o 1.7.3. – notJim
Ho aggiornato '.git/config' per me, ho git 1.7.5.4. – mxcl