2013-07-25 26 views
6

È possibile scaricare i sottomoduli per un repository con solo la directory di lavoro?Scaricare i sottomoduli git per tarball

Se scarico un archivio tarball di un repository da GitHub, che è equivalente a un clone poco profondo senza la cartella .git, è possibile "scaricare" i sottomoduli nella directory di lavoro?

Ho provato git init && git submodule update --init, ma questo non inizializza né aggiorna i sottomoduli. Il file .gitmodules si trova nella directory corrente.

Aggiornamento: Alcuni più di fondo sulla questione: Vorremmo utilizzare tarball per il check-out repository a Travis CI, ma diverse persone utilizzano sottomoduli git. "Non utilizzare i sottomoduli Git" non sarebbe quindi una buona risposta, ma la risposta non deve essere necessariamente mantenuta. Voglio solo una cartella che ha il codice estratto e con i sottomoduli inizializzati, non c'è bisogno di nulla che mi permetta di tirare giù più modifiche in seguito.

+0

Perché sarebbe non un aggiornamento del modulo 'git --init --recursive --force' essere al lavoro? Dovrebbe caricare quei sottomoduli (ma con la loro cronologia completa). Nota che [git1.8.4 aggiungerà un - profondità per il clone del sottomodulo poco profondo] (http://stackoverflow.com/a/17692710/6309). – VonC

+0

@VonC Se solo lo sapessi. Quel comando non fa niente per me. Nessun errore, ma restituisce "istantaneamente" senza alcun output. – henrikhodne

+0

Qual è il contenuto del tuo file '.gitmodules'? E quale versione di git stai usando? – VonC

risposta

2

Combinando un approccio wget/catrame, con una git init non aiuterà si inizializza sottomoduli:

Tutto è non tracciata dopo la git init.

è necessario aggiungere e si impegnano ogni cosa, prima di :

git submodule update --init --recursive --force 

Che git submodule comando sarà quindi "lavoro", ma creare directory solo vuote.
Questo perché il file tar non includeva lo special entries (160000) creato da un git submodule add.

È necessario ri-dichiarare le sottomoduli:

C:\prog\git\ReactiveCocoa-2.0-development>git submodule add --name xcconfigs https://github.com/jspahrsummers/xcconfigs.git external\xcconfigs 
Cloning into 'external\xcconfigs'... 
remote: Counting objects: 312, done. 
remote: Compressing objects: 100% (229/229), done. 
Receal 312 (delta 87), reused 306 (delta 82) 
Receiving objects: 100% (312/312), 64.51 KiB | 0 bytes/s, done. 
Resolving deltas: 100% (87/87), done. 
+0

Questo ancora non funziona per me. Sto usando gli stessi comandi di Gist nel commento sopra, con 'git add -A. && git commit -m "commit everything" "immediatamente dopo' git init'. – henrikhodne

+0

@henrikhodne Ho appena modificato la mia risposta. – VonC

+0

Grazie, sembra che dobbiamo analizzare il file '.gitmodules' e poi leggere tutto. Speravo in qualcosa di leggermente più automatizzato, ma immagino che funzionerà. – henrikhodne

Problemi correlati