Control de versións

Os sistema de control de versións (VCS, do inglés «version control system»), xestor de código fonte (SCM, do inglés «source code manager») ou sistema de control de revisións (RCS, do inglés «revision contol system») son as ferramentas de xestión e control dos cambios en diferentes versións de código fonte de software ou doutros contidos como información de imaxes, bases de datos, documentación ou similares. O control de versións séguelle os cambios aos documentos e ao código fonte, como é o caso de proxectos de desenvolvemento de software ou creación de páxinas web, e recompila esa información. Aos cambios asígnalles un código de letras ou números, que se denominan «número de revisión», «nivel de revisión» ou «revisión». A calquera cambio posterior a un número de revisión que se lle faga a un documento ou código fonte, como son o engadido dunha imaxe ou bloque de código, o control de versións asígnalle unha nova etiqueta, estampa temporal, e traza que cambios se fixeron e quen os fixo, i.e. un desenvolvedor. O control de versións permite comparar, restaurar e resolver conflitos entre cambios de ficheiros e xunguilos.

A necesidade da lóxica de organización e control de revisións existiu desde que a escrita existe, mais isto fíxose máis necesario na época do nacemento da computación. A numeración de edicións ou especificación de revisión nas edicións imprentas de libros e revistas é un exemplo disto na época onde só existía a imprenta. Hoxe en día os sistemas de control de revisións sustentan o desenvolvemento de software, xa que implican a participación de par de ducias de desenvolvedores na edición dos mesmos ficheiros e código.

Os sistemas de control de versións, VCS, adoitan executarse como aplicativos separados. Porén, moitos xa dispoñen de interfaces nas que aparecen incorporados. Así é que hai procesadores de texto ou follas de cálculo que os incorporan para que fagan edicións colaborativas. Os sistemas de control de versións permiten desfacer os cambios dun documento á anterior ou calquera outra previa modificación. Grazas a iso os editores poden analizar os cambios feitos por outros autores, corrixir os erros e defenderse do vandalismo e do spam.

Os controis de versións poden ser centralizados ou descentralizados. Os centralizados empregan un repositorio centralizado onde todos os desenvolvedores envían os seus cambios do código, ficheiros e/ou datos, como é o caso de Subversion. Outros, os que se desenvolveron na última década como Git ou Mercurial, son descentralizados. Para estes cada copia nun computador actúa como un repositorio e os cambios pódense enviar e xunguir en calquera deles.

Para os proxectos de múltiples desenvolvedores os sistemas de control de versións son esenciais.. Un caso a destacar é o emprego ge Git para o desenvolvemento do kernel de linux . Actualmente os controis de versións máis empregados son Baazar, Mercurial e Git.

 Historia dos control de versións 
Os sistemas de control de versións pódense agrupar en tres períodos históricos de desenvolvemento. Os primeiros sistemas de control, como RCS e SCCS, xestionaban a información por bloques, co que só unha persoa se podía encargar de mudar un ficheiro de cada vez. Os seguintes, como foron CVS, Subversion e Team Foundation Server. Foron máis permisivos e permitiron facer mudanzas simultáneas dos mesmo ficheiros. Mais, cada persoa tiña que primeiro xunguir, unificar, os cambios no seu espazo de traballo e logo enviar ao repositorio central cos cambios xa unificados. Na última xeración de sistemas de control de versións están Bazaar, Git e Mercurial. Estes sistemas non son centralizados e permiten xunguir e enviar os cambios de cada persoa por separado .

 Software de control de versións 
Pódense clasificar o software de control de versión actual segundo a aproximación de xestión de cambios, que casa co seu desenvolvemento histórico. Poden ser de traballos só locais, no que cada desenvolvedor ou persoa usa o mesmo conxunto de ficheiros ou datos. Pode ser dun modelo cliente-servidor, no que todas os desenvolvedores empregan un único repositorio central. Finalmente, poden ser distribuídos, nos que cada desenvolvedor traballa no seu propio repositorio e fai cambios e xuncións de xeito separado.

As principais ferramentas de control de versións lístanse nas seguintes seccións.

 Modelos de traballo local 
 Revision Control System (RCS)
 Source Code Control System (SCCS)
 Modelo cliente-servidor 
 Concurrent Versions System (CVS)
 CVSNT 
 OpenCVS
 Subversion (SVN)
 Vesta
 Modelo distribuído 
 ArX
 Bazaar
 BitKeeper
 Codeville
 Darcs
 DCVS
 Fossil
 Git 
 GNU arch
 Mercurial
 Monotone
 SVK 
 Veracity

 Notas 

 Véxase tamén 
 Outros artigos 
 Software libre