Sistema de control de versiones

De ChuWiki

¿Qué es un sistema de control de versiones?[editar]

Cuando realizamos un proyecto software es bastante habitual que vayamos haciendo pruebas, modificando nuestros fuentes continuamente, añadiendo funcionalidades, etc. Muchas veces, antes de abordar un cambio importante que requiera tocar mucho código nos puede interesar guardarnos una versión de los fuentes que tenemos en ese momento, de forma que guardamos una versión que sabemos que funciona y abordamos, por separado, los cambios.

Si no usamos ningún tipo de herramienta que nos ayude a hacer esto, lo más socorrido es directamente hacer una copia de los fuentes en un directorio separado. Luego empezamos a tocar. Pero esta no es la mejor forma. Hay herramientas, los sistemas de control de versiones, que nos ayudan a guardar las distintas versiones de los fuentes de una forma mejor.

Con un sistema de control de versiones hay un directorio, controlado por esta herramienta, donde se van guardando los fuentes de nuestro proyecto con todas sus versiones. Usando esta herramienta, nosotros sacamos una copia de los fuentes en un directorio de trabajo, ahí hacemos todos los cambios que queramos y, cuando funcionen, le decimos al sistema de control de versiones que nos guarde la nueva versión. El sistema de control de versiones suele pedirnos que metamos un comentario cada vez que queremos guardar fuentes nuevos o modificados.

También, con esta herramienta, podemos obtener fácilmente cualquiera de las versiones de nuestros fuentes, ver los comentarios que pusimos en su momento e incluso comparar distintas versiones de un mismo fuente para ver qué líneas hemos modificado.

Aunque los sistemas de control de versiones se hacen imprescindibles en proyectos de cierta envergadura y con varios desarrolladores, de forma que puedan mantener un sitio común con las versiones de los fuentes a través de un sistema de control de versiones, también puede ser útil para un único desarrollador en su casa, de forma que siempre tendrá todas las versiones de su programa controladas.

Sistemas de control de versiones centralizados[editar]

En un sistema de control de versiones centralizado todos nuestros fuentes y sus versiones están almacenados en un único directorio (llamado repositorio de fuentes) de un ordenador (un servidor). Todos los desarrolladores que quieran trabajar con esos fuentes, deben pedirle al sistema de control de versiones una copia local para trabajar. En ella realizan todos sus cambios y cuando están listos y funcionando, le dicen al sistema de control de versiones que guarde los fuentes modificados como una nueva versión.

Una vez subido el código, está disponible para otros desarrolladores, que pueden actualizarse y pedir la nueva versión. De alguna forma, para el intercambio de fuentes entre ellos, es necesario pasar por el repositorio de fuentes del servidor. Es en el servidor donde están guardadas todas las versiones y los desarrolladores sólo tienen en su copia local aquellos fuentes que han solicitado del servidor.

Los sistemas de control de versiones gratuitos más conocidos son CVS y Subversion.

Sistemas de control de versiones distribuidos[editar]

En un sistema de control de versiones distribuido no hay un repositorio central. Todos los desarrolladores tienen su propia copia del repositorio, con todas las versiones y toda la historia. Por supuesto, según van desarrollando y haciendo cambios, sus fuentes y versiones van siendo distintas unas de otras. Sin embargo, los sistemas de control de versiones distribuidos permiten que en cualquier momento dos desarrolladores cualesquiera puedan "sincronizar" sus repositorios. Si uno de los desarrolladores ha tocado determinados fuentes y el otro no, los modificados se convierten en la versión más moderna. En caso de que ambos desarrolladores hayan tocado los mismos fuentes, el sistema de control de versiones avisa para que los desarrolladores decidan qué cambios de cada uno son válidos. Una vez hecho todo este trabajo, los repositorios de ambos desarrolladores tendrán la misma versión.

En un sistema de control de versiones distribuido lo normal es decidir algún sitio donde esté un repositorio de fuentes que se considera oficial, de forma que ahí es de dónde los nuevos desarrolladores cogen su primera copia del proyecto y donde los desarrolladores van dejando las modificaciones validadas y aprobadas. De alguna forma es un sistema de trabajo similar al del sistema de control de versiones centralizado, pero menos rígido, ya que los desarrolladores pueden ir generando y guardando localmente todas sus versiones, e incluso compartirlas entre ellos, antes de dar por válidos los cambios y subirlos al repositorio oficial.

Algunos de los sistemas de control de versiones distribuidos gratuitos más conocidos son Bazaar, Mercurial y Git

Enlaces externos[editar]