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
-----

1. ↑  Sammes, A. J. (2009). *From P2P and Grids to Services on the Web*. Computer Communications and Networks. Ian J. Taylor, Andrew B. Harrison (eds.). London: Springer London. ISBN 978-1-84800-123-7. Consultado o 6 de xaneiro de 2017.
2. ↑  McCullough, Jon Loeliger, Matthew (2009). *Version Control with Git*. ISBN 978-1-4493-1638-9. Consultado o 6 de xaneiro de 2017.
3. ↑  "Version Control in Scientific Computing". Consultado o 6 de xaneiro de 2017.
4. ↑  "Rapid Subversion Adoption Validates Enterprise Readiness and Challenges Traditional Software Configuration Management Leaders". Collabnet. 15 de maio de 2007. Arquivado dende o orixinal o 21 de febreiro de 2013. Consultado o 6 de xaneiro de 2017. A xestión de versións é crucial para o desenvolvemento de software e considérase a compoñente máis crítica para calquera ambiente de desenvolvemento.
5. ↑  "What Is Git & Why You Should Use Version Control If You’re a Developer". *MakeUseOf*. Consultado o 6 de xaneiro de 2017.
6. 1 2  "Version Control by Example". Arquivado dende o orixinal o 04 de xaneiro de 2017. Consultado o 2017-01-06.
7. ↑  "Astonishments, ten, in the history of version control : Francis Irving". Consultado o 6 de xaneiro de 2017.

Véxase tamén
------------

### Outros artigos

* Software libre

---

|  |  |
| --- | --- |
| Este artigo tan só é un bosquexo |  *Este artigo sobre informática é, polo de agora, só un bosquexo. Traballa nel para axudar a contribuír a que a Galipedia mellore e medre.* *Existen igualmente outros artigos relacionados con este tema nos que tamén podes contribuír.* |

---

|  |  |
| --- | --- |
| Control de autoridades | 
* Wd: Q189439
* GND: 4202033-5
* LCCN: sh2014000307
* MAG: 33165040

 |