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