MP08 - UF4: Control de versions i documentació
Control de versions - Què és
Un sistema de control de versions o VCS, també conegut com a control de revisions o sistema de control de font, és una utilitat de programari que rastreja i gestiona els canvis en un sistema de fitxers. Un VCS també ofereix utilitats col·laboratives per compartir i integrar aquests canvis del sistema de fitxers amb altres usuaris de VCS. Quan funciona a nivell de sistema de fitxers, un VCS farà un seguiment de les accions d'addició, supressió i modificació aplicades als fitxers i directoris. Un repositori és un terme VCS que descriu quan VCS està fent el seguiment d'un sistema de fitxers. En l'àmbit dels fitxers de codi font individuals, un VCS farà un seguiment de les addicions, les supressions i les modificacions de les línies de text dins d'aquest fitxer. Les opcions VCS populars de la indústria del programari inclouen Git, Mercurial, SVN i Preforce.
Per què necessito un programari de control de versions?
VCS és una eina inestimable amb molts avantatges per a un flux de treball d'equip de programari col·laboratiu. Qualsevol projecte de programari que tingui més d'un desenvolupador que mantingui fitxers de codi font hauria d'utilitzar sempre un VCS. A més, els projectes de manteniment únic també es beneficiaran molt de la utilització d'un VCS. No hi ha cap raó vàlida per renunciar a l'ús d'un VCS en cap projecte de desenvolupament de programari modern.
Avantatges dels sistemes de control de versions
1.- La resolució de conflictes
Durant el cicle de vida d'un projecte de programari impulsat per un equip, el més probable és que diversos membres de l'equip tinguin la necessitat de fer canvis al mateix fitxer de codi font alhora. Un VCS farà un seguiment i ajudarà en conflictes entre diversos desenvolupadors. Aquestes operacions de resolució de conflictes deixen una pista d'auditoria que proporciona una visió de la història d'un projecte.
2.- Desfer i desfer els canvis al codi font
Un cop un VCS ha començat a fer el seguiment d'un sistema de fitxers de codi font, manté un historial de canvis i l'estat del codi font al llarg de la vida d'un projecte. Això permet la possibilitat de desfer o retrocedir allò fet en un projecte fins a un últim estat conegut. Si es descobreix un error en una aplicació en directe, el codi es pot revertir ràpidament a una versió estable coneguda.
3.- Còpia de seguretat del codi font fora del lloc
Quan s'utilitza un VCS de manera col·laborativa, s'ha de crear una instància remota del VCS per compartir els canvis entre desenvolupadors. Aquesta instància remota de VCS es podria allotjar fora del lloc amb un tercer de confiança com Github. Aleshores es converteix en una còpia de seguretat fora del lloc. En un escenari desafortunat com un ordinador portàtil robat, la instància remota de VCS encara conservarà una còpia del codi font.
Tot i que és possible desenvolupar programari sense utilitzar cap control de versions, fer-ho sotmet el projecte a un risc enorme que no es recomana a ningú. Per tant, la qüestió no és si utilitzar el control de versions, sinó quin sistema de control de versions utilitzar.
Hi ha moltes opcions, però treballarem amb una, git en local i Github com a remot.
Les eines VCS inclouen dos tipus principals d'arquitectura remota. Aquests tipus d'arquitectura estan centralitzats i distribuïts.
Quan es discuteixen els avantatges i els contres de cada arquitectura, la funció de còpia de seguretat fora del lloc és el punt de discussió principal. Un VCS centralitzat té un únic punt de fallada, que és la instància VCS central remota. Si es perd aquesta instància, pot causar productivitat i pèrdua de dades, i caldrà substituir-la per una altra còpia del codi font. Si no està disponible temporalment, evitarà que els desenvolupadors impulsin, fusionin o tornin enrere el codi. Una arquitectura de model distribuït evita aquests inconvenients mantenint una còpia completa del codi font a cada instància de VCS. Si es produeix algun dels escenaris de fallada centralitzada anteriorment esmentats dins del model distribuït, es pot canviar una nova instància de VCS per liderar el desenvolupament i mitigar qualsevol caiguda greu de la productivitat.
Centralitzat | Distribuit |
---|---|
![]() |
![]() |