2009-10-08 13 views
46

Ho diverse applicazioni in sottodomini su vari server Ogni applicazione ha il proprio repository git. Ogni applicazione utilizza diversi file condivisi. In sostanza, i miei repos si sovrappongono. Come viene gestita questa situazione con più editor di più progetti?Come condividere file tra repository git?

risposta

14

Proverei a creare tutte le parti sovrapposte git submodules.

+2

Dopo alcune ricerche, sembra che non sia possibile modificare la risorsa condivisa come sottomodulo. Idealmente, vorremmo essere in grado di modificare la condivisione dagli altri progetti in cui sono inclusi, ma mantenere una posizione centrale. Questo è ancora possibile con i sottomoduli? – tbeseda

+2

Le persone che lavorano su uno qualsiasi dei progetti in cui sono inclusi saranno in grado di apportare modifiche ai sottomoduli, ma le modifiche devono essere monitorate separatamente. Non c'è modo di spingere le modifiche a un repository git e capire che alcune delle modifiche dovrebbero essere trasferite su un altro repository. – mckeed

+1

Ecco un paio di ulteriori documenti che utilizzano un approccio walk-through: http://git-scm.com/book/en/Git-Tools-Submodules e https://git.wiki.kernel.org/index .php/GitSubmoduleTutorial – Sean

6

Sembra che dovresti suddividere gli elementi comuni in modo che ci sia una chiara distinzione, quindi utilizzare i sottomoduli. Assicurati di separare chiaramente i pezzi comuni, altrimenti rischierai di creare un disordine irraggiungibile.

7

Fintanto che più progetti stanno trasferendo le modifiche al sottomodulo fino alla posizione condivisa, sì, tutti possono apportare modifiche alla risorsa condivisa. Detto questo, se uno di loro ha bisogno che il loro sia 'speciale', dovrà dirottare il sottomodulo.

https://git-scm.com/book/en/v2/Git-Tools-Submodules

Questo ti guida attraverso un progetto eccellente con sottomoduli, la modifica del modulo all'interno del progetto di super e spingendolo indietro. Mostra anche il pericolo che sovrascrive in modo silenzioso le modifiche se si esegue un git submodule update e si hanno modifiche locali non premute sul ramo principale.

In particolare, da qualche parte si ha una cartella condivisa 'cartella' - è necessario rimuovere questo da tutti i progetti git, ma creare un nuovo repository git da qualche parte con il contenuto corrente come commit iniziale. Poi avrai git submodule <repo> folder; git submodule update in tutti i progetti che ora lo condivideranno. Saranno tutti in grado di trasferire le modifiche al repository condiviso e saranno in grado di abbattere le modifiche reciproche.

1

È inoltre possibile utilizzare lo strumento git-subrepo. La pagina wiki è collegata. È fondamentalmente una versione migliorata di submodule e subtree.

Problemi correlati