# Ramificació (control de versions)

La ramificació, en control de versions i gestió de configuració de programari, és la duplicació d'un objecte sota control de versions (com ara un fitxer de codi font o un arbre de directoris). Cada objecte es pot modificar per separat i en paral·lel de manera que els objectes es tornin diferents. En aquest context, els objectes s'anomenen branques. Els usuaris del sistema de control de versions poden ramificar qualsevol branca.
Les branques també es coneixen com a arbres, rierols o línies de codi. La branca d'origen de vegades s'anomena branca mare, la branca aigües amunt (o simplement aigües amunt, especialment si les sucursals són mantingudes per diferents organitzacions o individus), o el corrent de suport.

## Tronc

Les branques infantils són branques que tenen un pare; una branca sense pare s'anomena tronc o línia principal. El tronc també es coneix de vegades com a HEAD, però pròpiament el cap no es refereix a una branca, sinó al commit més recent en una branca determinada, i tant el tronc com cada branca anomenada tenen el seu propi cap. El tronc sol ser la base d'un projecte en el qual avança el desenvolupament. Si els desenvolupadors estan treballant exclusivament en el tronc (l'anomenat desenvolupament basat en el tronc ), sempre conté la darrera versió d'avantguarda del projecte, però per tant també pot ser la versió més inestable. Un altre enfocament és dividir una branca del tronc, implementar canvis en aquesta branca i tornar a fusionar els canvis al tronc quan la branca ha demostrat ser estable i funcionant. Depenent del mode de desenvolupament i de la política de confirmació, el tronc pot contenir la versió més estable o menys estable o alguna cosa intermèdia. Altres termes per a tronc inclouen baseline, mainline i master, encara que en alguns casos s'utilitzen amb sentits similars però diferents; vegeu version control § Common terminology. Sovint, el treball principal del desenvolupador té lloc al tronc i les versions estables es ramifiquen, i ocasionalment es fusionen correccions d'errors de les branques al tronc. Quan el desenvolupament de futures versions es fa en branques no troncals, normalment es fa per a projectes que no canvien sovint, o on s'espera que un canvi trigui molt a desenvolupar-se fins que estigui llest per incorporar-lo al tronc.

## Fusió

La ramificació generalment implica la possibilitat de fusionar o integrar canvis posteriorment a la branca principal. Sovint, els canvis es fusionen de nou al tronc, encara que aquesta no sigui la branca principal. Una branca que no està pensada per ser fusionada (per exemple, perquè ha estat rellicenciada sota una llicència incompatible per part d'un tercer, o intenta servir un propòsit diferent) normalment s'anomena bifurcació.

## Motivacions per a la ramificació

Les branques permeten desenvolupar parts del programari en paral·lel. Els grans projectes requereixen moltes funcions, com ara desenvolupadors, gestors de construcció i personal de garantia de qualitat. A més, és possible que s'hagin de mantenir diverses versions en diferents plataformes de sistemes operatius. Les branques permeten als col·laboradors aïllar els canvis sense desestabilitzar la base de codi, per exemple, correccions d'errors, noves característiques, i integració de versions. Aquests canvis es poden fusionar (resincronitzar) després de la prova.

## Branca de desenvolupament

Una branca de desenvolupament o arbre de desenvolupament d'una peça de programari és una versió que està en desenvolupament i encara no s'ha publicat oficialment. A la comunitat de codi obert, la noció de llançament sol ser metafòrica, ja que qualsevol persona normalment pot consultar qualsevol versió desitjada, ja sigui a la branca de desenvolupament o no. Sovint, la versió que finalment es convertirà en la següent versió principal s'anomena branca de desenvolupament. Tanmateix, sovint hi ha més d'una versió posterior del programari en desenvolupament en un moment determinat.
Sovint, la branca de desenvolupament és el tronc. Alguns sistemes de control de revisions tenen argot específic per a la branca principal de desenvolupament. Per exemple, a CVS, s'anomena branca "MAIN". Git utilitza "master" per defecte, tot i que GitHub i GitLab van canviar a "principal" després de l'assassinat de George Floyd.

## Referències

* ↑ Berczuk, Steve. Software Configuration Management Patterns: Effective Teamwork, Practical Integration (en anglès). Addison-Wesley, 2003. ISBN 0-20174117-2.
* ↑ Appleton, Brad. «Streamed Lines: Branching Patterns for Parallel Software Development» (PDF) (en anglès). Hillside, 08-02-1998. [Consulta: 12 agost 2009].
* ↑ Bailey, Derick. «Part 1: Why» (en anglès). Branch-Per-Feature Source Control. Los techies, 15-07-2009. [Consulta: 12 agost 2009].
* ↑ Wallen, Jack. «GitHub to replace master with main starting in October: What developers need to do now» (en anglès). TechRepublic, 22-09-2020. [Consulta: 24 abril 2022].
* ↑ Heinze, Carolyn. «Why GitHub renamed its master branch to main» (en anglès). TheServerSide, 24-11-2020. [Consulta: 24 abril 2022].