Sto scrivendo un'interfaccia per un lessico in Java. Ho appena iniziato questo progetto e il lessico è in versione 3.8. Quando esce una nuova versione, ad esempio versione 4.0, le colonne del database possono essere rinominate, rimosse, aggiunte, riorganizzate, ecc. Il database potrebbe essere completamente diverso e la mia interfaccia 3.8 non funzionerebbe con esso, quindi dovrei aggiornare la libreria da interfacciare con 4.0. Tuttavia, voglio anche mantenere la retrocompatibilità con 3.8 e continuare a fare lo sviluppo su tutte le versioni finché non rilasciamo il supporto per loro.
Credo che il software di controllo del codice sorgente come Git (che sto usando per il progetto) possa rendere la manutenzione e l'aggiunta di funzionalità a diverse versioni veramente facili attraverso rami e tag di rilascio, ma sono non so come organizzare il progetto.
Come si fa a gestire una singola libreria che si interfaccia con più versioni di un'origine dati, che potrebbero aver bisogno di uno sviluppo continuo?
I miei pensieri:
- La versione più recente dello sviluppo della libreria va in master
- lo sviluppo per le vecchie versioni si trova nei rami OLD_VERSION_XXXX dove potrebbe essere XXXX:
- stabile
- sviluppo
- qualsiasi funzione casuale / ramo di bugfix che viene unito in dev o stable per quella versione
- Utilizza Rilasci e Tag in Github per garantire la coerenza tra queste versioni e per rilasciare nuove versioni compilate quando necessario
Nota : questo è un progetto personale che (probabilmente) userò solo io, ma voglio applicare alcune pratiche del mondo reale nel modo giusto .