2013-02-13 10 views
16

Ho un progetto che utilizza alcune librerie di terze parti. Quindi la struttura di directory è qualcosa di simile:Sottostruttura di Git: utilizzare solo subrepository anziché intero repository

MY_COOL_PROJECT 
    3rdParty 
     LIB_1 
     LIB_2 
    Source 
     MY_PROJECT 

Le librerie si trovano in archivi separati. Quindi, se voglio usare un repository git per le librerie 3rd Party posso fare:

git subtree add --prefix 3rdParty/LIB_1 --squash http://My3rdPartyLibs.com/lib1.git master 

Tuttavia, all'interno di repository lib1.git c'è una sola cartella bin ho bisogno. Contiene anche cartelle come documentazione, esempi, ecc. Come posso solo "collegare" il mio repository con la cartella lib1/bin invece dell'intero repository? È possibile?

+1

ha trovato una soluzione per la sottostruttura sparse? (la risposta attuale non sembra risolverlo completamente) – inger

risposta

7

Normalmente, un repository git viene eseguito per essere completamente clonato/caricato.

È poteva andare per un sparse checkout (Git1.7 +), ma solo se non si dispone l'intenzione di fare alcuna modifica e spingere chi è rimasto. Vedi this example:

$ git init 
Initialized empty Git repository in /tmp/si-sandbox/.git/ 
(master) $ git config core.sparsecheckout true 
(master) $ echo message-store/ >> .git/info/sparse-checkout 
(master) $ git remote add origin git://github.com/iwein/Spring-Integration-Sandbox.git 
(master) $ git pull origin master 

Il OP user2070238reports:

questo ha lavorato con alcune modifiche.
Perché, io uso modulo ho dovuto usare

echo MY_FOLDER/* >> .git/info/modules/MY_MODULE/sparse-checkout 

E per qualche ragione la parte MY_FOLDER/ non funzionava senza *

+1

Grazie, ha funzionato con alcune modifiche. Perché, io uso modulo ho dovuto usare 'MY_FOLDER eco/* >> .git/informazioni/modules/MY_MODULE/radi-checkout' E per qualche motivo il MY_FOLDER/parte non funzionava senza * – user2070238

+0

@ user2070238 Eccellente. Ho incluso il tuo commento nella risposta per maggiore visibilità. – VonC

+1

La domanda originale riguardava "git subtree" - questa risposta copre invece la sparsa verifica ... alla metà della soluzione? (forse nemmeno) – inger

Problemi correlati