Il nostro progetto utilizza Gradle (il cui sistema di dipendenze è compatibile con Maven IIUC). Quando dipendiamo da progetti esterni, proviamo a dipendere da versioni stabili. A volte dobbiamo dipendere da una versione di sviluppo. E a volte dobbiamo bifare il repository di una dipendenza e dipendere da quello (in generale cerchiamo di aggiornare le nostre modifiche il prima possibile).
Come possiamo garantire che tutti i nostri sviluppatori ottengano un ambiente di sviluppo coerente?
-
Potremmo usare i sottoregisti Mercurial (che sono simili ai sottomoduli Git e permettono di "incorporare" revisioni specifiche di repository esterni nel nostro repository). Lo svantaggio è che ogni sviluppatore deve compilare tutte le versioni non rilasciate delle dipendenze.
-
Potremmo configurare un server di artefatto interno e creare centralmente tutte le dipendenze forked.
- Potremmo lasciare invariata la versione della dipendenza nel repository biforcato. Quindi dobbiamo in qualche modo garantire che le modifiche nel repository vengano rilevate da tutti gli sviluppatori per avere un ambiente coerente su tutte le macchine.
- Potremmo dare a ogni revisione "significativa" del repository biforcuta una versione speciale e cambiare il nostro progetto per dipendere da queste versioni. Questo ha lo svantaggio che non possiamo semplicemente usare il ramo che usiamo per aggiornare le nostre modifiche (poiché la versione dovrebbe essere invariata quando si crea una richiesta di pull).
Pensieri? Ci sono modi migliori per risolvere questo problema?