Salta el contingut

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.

Fusió de branques en un sol commit

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:

  1. Crear una branca feature/* per a cada nova funcionalitat, amb un nom significatiu i descriptiu.
  2. Començar a desenvolupar la funcionalitat en la branca corresponent (fer almenys un commit).
  3. 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.
  4. Realitzar tants commits com siga necessari per a completar la funcionalitat.

  5. Si la branca no està actualitzada amb develop, fusiona develop en la branca de la funcionalitat i resol els conflictes si n'hi ha.
  6. Canviar l'estat de la Pull Request a A punt per a revisió (Ready for review).
  7. Esperar a que les tasques automatitzades s'executen correctament.

    • En cas de d'error, corregir els errors amb nous commits i repetir aquest pas.
  8. Finalment, integrar la funcionalitat en la branca de desenvolupament mitjançant un merge --squash.