DVCS
Sono stati utilizzati Git e GitHub come sistema di controllo versione distribuito (DVCS) per gestire il codice sorgente
del progetto. Il modello di branching adottato è Trunk Based Development, che prevede l'utilizzo di un branch
principale (main
) per lo sviluppo continuo e la creazione di branch secondari per funzionalità specifiche.
Branching Model
Il modello di branching adottato è stato il seguente:
- main: branch principale, sempre in stato production-ready. Tutte le modifiche vengono integrate nel branch dopo essere state testate e revisionate;
- feature/: branch per lo sviluppo di nuove funzionalità. Ogni feature ha un proprio branch dedicato, creati da
main
e uniti sumain
una volta completati e testati; - hotfix/: branch per risolvere bug critici in produzione. Creati da
main
; una volta risolto il problema, le modifiche vengono integrate sumain
e nei branch delle feature attive; - doc: branch dedicato alla documentazione del progetto; le modifiche alla documentazione vengono poi integrate su
main
.
Commit e Pull Request
I commit e i titoli delle pull request seguono Conventional Commits.
Le release sono state effettuate tramite GitHub Actions, seguendo le convenzioni di versioning
semantico SemVer.
Per il controllo del testo dei commit è stato utilizzato un git hook commit-msg
, che ne verifica la conformità alle
convenzioni. Per la verifica della correttezza del codice è stato invece utilizzato un hook pre-push
, che esegue
automaticamente i controlli di linting, formattazione e test.
Per le pull request, il titolo è il contenuto è stato controllato con Mergify, che ne verifica
la conformità alle convenzioni
e richiede che siano state superate tutte le verifiche di Continuous Integration (CI) prima di poter essere unite a
main
.
Definition of done
Per chiudere una pull request, è necessario che siano soddisfatte le seguenti condizioni:
- il codice è stato testato e verificato;
- la pull request è stata revisionata da almeno due membri del team;
- il titolo della pull request segue i Conventional Commits;
- tutti i test passano con successo;
- non ci sono conflitti di merge con il branch
main
; - non ci sono conversazioni aperte nella pull request;
- la documentazione è aggiornata, se necessario.