Universidad Nacional Autónoma de México
Dirección General de Servicios de Cómputo Académico
Año 7 Núm. 74, Publicación Mensual, 27 de Noviembre de 2008

ARTÍCULOS

 

Año 5, Número 51, Agosto de 2006

Sistemas de control de versiones

Humberto Javier Flores Tirado

En la actualidad, los Sistemas de Control de Versiones son utilizados por personas y empresas que desarrollan software. Su funcionalidad permite llevar un orden de las versiones que van creando de su software, para así controlar quiénes pueden hacer modificaciones a los archivos de éste, llevar un histórico de las versiones entregadas a sus clientes, trabajar en grupo, entre otras cosas. También, pueden usarlos personas que deseen llevar un control de los cambios realizados en sus archivos, ya sea de imágenes, documentos, hojas de cálculo, etcétera.

Supongamos que un escritor está creando un libro, conforme avanza el tiempo realiza cambios sustanciales a su documento pero, en determinado momento, desea revisar algunas anotaciones, si el escritor es ordenado y crea archivos por cada modificación que realiza en su documento, podría consultar sin problemas las anotaciones deseadas; en el caso de que cada cambio lo realizara sobre un sólo documento, no tendría forma de poder consultar dichas anotaciones. Por otra parte, si el escritor usara un Sistema de Control de Versiones podría hacer cambios a un sólo documento y este sistema, automáticamente, los guardaría, lo cual le permitiría consultar con facilidad cualquier modificación.

Por tanto, un Sistema de Control de Versiones se encarga de administrar el acceso a todos los archivos que conforman un proyecto, para crearlos, modificarlos o eliminarlos, a la par de que genera un historial de cambios realizados en dichos archivos. Asimismo, cuenta con un repositorio o conjunto de archivos de cualquier tipo pertenecientes a un proyecto, donde se almacena el historial de todos los cambios realizados.

Cada usuario que tenga acceso al repositorio puede obtener una copia local de la última versión o de cualquier otra existente en el proyecto, con dicha copia podrá modificar los archivos descargados del repositorio pero, estos cambios deberán ser enviados, a su vez, al repositorio para que otros usuarios puedan tener acceso a los mismos. En otras palabras, se cuenta con una copia maestra del proyecto almacenado en el repositorio, donde un programa cliente permite a cada usuario obtener una copia local o sincronizar dicha copia con la copia maestra, para obtener nuevos cambios o enviar los suyos al repositorio.

Uno de los problemas principales que surge en estos sistemas ocurre cuando dos o más usuarios tratan de modificar un mismo archivo, para lo cual se cuenta con dos estrategias:

  • Una llamada bloque o exclusivos, que es el bloque del archivo que está siendo editado por un usuario, lo que evita que otros usuarios realicen modificaciones durante la edición del archivo.
  • La otra se llama colaborativos o fusión de cambios, donde el acceso a los archivos puede ser concurrente y los cambios realizados a un mismo archivo son fusionados inteligentemente por el sistema. El problema que conlleva esta opción es que si el intento de fusión de los cambios es incompatible, deberá solucionarse de manera manual.
  • Las principales características de los Sistemas de Control de Versiones son:
  • Cuentan con un mecanismo para almacenar los elementos (archivos) de un proyecto: imágenes, documentos, archivos de código fuente, archivos de música, etcétera.
  • Permiten borrar, modificar y crear elementos en el proyecto almacenado en el repositorio.
  • Tienen en el repositorio un historial de todos los cambios realizados en los elementos de un proyecto, con la posibilidad de volver a una versión anterior registrada por el historial del repositorio.
  • Permiten acceder a un repositorio de manera remota, para que los usuarios que participan en el proyecto cuenten con una copia local en su máquina personal y no tengan que trabajar en la máquina donde se encuentra el repositorio.
  • Otorgan permisos de diferente índole a los usuarios en las ramas del proyecto almacenado en el repositorio, con el fin de que únicamente tengan acceso a elementos específicos del proyecto.

Para finalizar, cabe mencionar que existe gran variedad de Sistemas de Control de Versiones como: CVS, GNU arch, Source Safe, Clear Case, Darcs, Subversion entre otros; varios de éstos son software libre y pueden ser descargados desde Internet.

Algunos sistemas operativos como GNU/Linux, en sus diferentes distribuciones, ya incluyen alguno de estos sistemas, el más común es CVS, aunque también puede ser Subversion.

Si se desea instalar en Windows, Mac OS, Solaris, entre otros, será necesario entrar a la página oficial de alguno de los sistemas mencionados (CVS, GNU arch, Source Safe, Clear Case, Darcs, Subversion, u otro que se conozca), descargar el o los programas necesarios para el sistema operativo deseado y seguir las instrucciones que indique el proveedor de dicho software.

Estas son algunas ligas para descargar y obtener más información sobre algunos de estos Sistemas de Control de Versiones.

CVS

http://www.cvshome.org
http://www.cvshome.org/
http://www.cvshome.org/docs/
http://ximbiot.com/cvs/wiki/
http://cvsbook.red-bean.com/cvsbook.html

Subversion

http://subversion.tigris.org/
http://tortoisesvn.tigris.org/
http://svnbook.red-bean.com/nightly/es/index.html
http://kopernix.com/?q=svnd_como

Darcs

http://abridgegame.org/darcs/

GNU Arch

http://regexps.srparish.net/www/

Inicio | Contacto |