Repository git multipli con una lib di base comune

5

Ho diversi repository git per un progetto web che condivide una libreria di codice comune. Non voglio ripetere il codice comune all'interno di ciascun repository. Quali sono alcuni modi in cui gli altri hanno risolto questo problema?

I sottomoduli Git sembrano avere molto odio perché tendono per causare più problemi di quanti non risolvono

Potrei semplicemente avere un repository separato per la lib core, ma non ci sarebbe modo per le versioni corrispondenti se i repository sono stati sviluppati da team separati. (Ad esempio, se v1.0.2 in un repository richiede la v2.0.0 nel core lib, tali informazioni dovrebbero essere tracciate da qualche parte).

In Android, build.gradle in più o in meno risolve questo problema. C'è qualcosa di simile per git? Ad esempio:

compile 'com.android.support:appcompat-v7:25.0.1' si riferisce a una versione specifica di una dipendenza remota. (Fonte: documenti Android )

    
posta Zach Rattner 28.11.2016 - 20:07
fonte

1 risposta

6

Puoi trattare il codice condiviso come codice o come un pacchetto. Se lo tratti come codice, allora git submodules è la risposta giusta. Se vuoi trattarlo come un pacchetto, devi introdurre la gestione dei pacchetti come parte del tuo processo di sviluppo.

Potresti già utilizzare un gestore di pacchetti come maven, nuget o npm per incorporare pacchetti di terze parti nei tuoi progetti. L'idea è di pubblicare il codice condiviso su un repository di pacchetti che controlli (ci sono sia repository di pacchetti gratuiti e commerciali disponibili per questi sistemi di pacchetti); i tuoi sviluppatori che usano il codice condiviso possono quindi incorporarlo nei loro progetti così come farebbero con un pacchetto di terze parti; questo fornisce la funzionalità di tracciamento della versione richiesta.

Il trattamento del codice condiviso come un pacchetto comporta un sovraccarico e potrebbe non essere utile se il codice condiviso è utilizzato da pochi client. Ma una volta che inizi ad avere più progetti client per il codice condiviso, ciascuno con programmi di rilascio indipendenti, il trattamento del codice condiviso come un pacchetto diventa più allettante.

    
risposta data 28.11.2016 - 20:42
fonte

Leggi altre domande sui tag