Control de versions¶
Utilitzar un sistema de control de versions d'una manera estructurada i ordenada és una pràctica imprescindible per a qualsevol projecte de programació, sobretot si participen més d'una persona.
Ferramentes¶
En aquest projecte utilitzarem les següents ferramentes per al control de versions:
- Git: sistema de control de versions distribuït.
- GitHub: plataforma d'allotjament de repositoris de Git.
Estratègia de ramificació¶
El desenvolupament del projecte es farà seguint una estratègia de ramificació que proporcionarà un flux de treball ordenat i estructurat.
Aquesta estratègia es basa en la creació de branques per a diferents propòsits:
- Branca principal
main
: Conté el codi estable que ha segut publicat. - Branca de desenvolupament
develop
: Conté la versió més actualitzada del codi, però que encara no ha sigut publicada. -
Branques de funcionalitats
feature/*
: Cada funcionalitat nova es desenvolupa en una branca pròpia.Depenent de la naturalesa del canvis, es pot optar per utilitzar diferents prefixes:
feature/
,fix/
, etc. -
Branques de publicació
release/*
: Branca temporal per a preparar la publicació d'una nova versió.
El mètode per integrar les branques de funcionalitats es realitzarà mitjançant
un merge --squash
per a mantenir l'historial de commits net i ordenat.
Figura 1. Fusió de branques mitjançant merge --squash
.
Podeu consultar el flux de treball complet en els apunts Estratègies de ramificació.
Pull Requests¶
Dins de l'àmbit de gestió del projectes, GitHub proporciona una funcionalitat anomenada Pull Request que permet sol·licitar la integració de canvis d'una branca a una altra.
Podeu consultar els apunts Pull Requests per a més informació.
Consell
És recomanable configurar el repositori per a requerir els següents aspectes:
- Pull Request requerida: No es permetrà fer commits directament a la branca principal ni de desenvolupament, que sols podran integrar canvis mitjançant Pull Requests.
- Història lineal: No es permetran commits amb història no lineal.
- Integració
merge --squash
: Deshabilitar els altres mètodes d'integració en les Pull Requests.
Flux de treball¶
El flux de treball que seguirem en el desenvolupament del projecte és el següent:
- Crear una branca
feature/*
per a cada nova funcionalitat, amb un nom significatiu i descriptiu. - Començar a desenvolupar la funcionalitat en la branca corresponent (fer almenys un commit).
-
Obrir una Pull Request de la branca de la funcionalitat a la branca
develop
com a Esborrany o Draft.- Especifiqueu un títol significatiu.
- Indiqueu una descripció clara i concisa dels canvis realitzats.
- Assigneu-se com a responsable.
-
Realitzar tants commits com siga necessari per a completar la funcionalitat.
- Si la branca no està actualitzada amb
develop
, fusionadevelop
en la branca de la funcionalitat i resol els conflictes si n'hi ha. - Canviar l'estat de la Pull Request a A punt per a revisió (Ready for review).
-
Esperar a que les tasques automatitzades s'executen correctament.
- En cas de d'error, corregir els errors amb nous commits i repetir aquest pas.
-
Finalment, integrar la funcionalitat en la branca de desenvolupament mitjançant un
merge --squash
.