Que es un controlador de versiones?
Es una herramienta que le permite a cualquier persona llevar el control de sus archivos mientras les van realizando cambios en el transcurso del tiempo. Se aconseja guardar una nueva versión o revisión de cada archivo después de realizar algún cambio relevante.

Donde puedo utilizar un controlador de versiones?
Los controladores de versiones pueden utilizarse en cualquier área de trabajo, pero comúnmente se utilizan en el área tecnológica. La mayoría de controladores de versiones se pueden utilizar en cualquier sistema operativo ya sea mediante línea de comandos o con interfaz grafica (dependiendo de la herramienta que se utilice).

Por que utilizar un controlador de versiones?
Muchas personas acostumbran hacer este trabajo de forma manual así como colocarle archivo-1.ext, archivo-fecha.ext, archivo-copia.ext, pero que pasa si los datos que necesitábamos ya la borramos? Para eso es necesario utilizar una herramienta que lo haga por nosotros con dos o tres simples comandos dependiendo de la herramienta que utilizamos.

Alguna vez quisieron un ctrl-z en sus vidas? Bueno, estas herramientas no lo harán con sus vidas pero al menos podrán averiguar que agregaron o que borraron de sus archivos en versiones anteriores.

Otro motivo por el que debemos utilizar un controlador de versiones es para mantener la integridad de los archivos y mantener una versión actualizada con los cambios que una persona o un grupo de colaboradores realizo a un conjunto de archivos.

Por ejemplo: Si tenemos un proyecto que se va a trabajar en un grupo de seis personas las cuales tienen repartido el trabajo de la siguiente forma: dos personas estarán involucradas en el diseño del proyecto, dos personas en la funcionalidad y dos personas en integrar el diseño y la funcionalidad. Al inicio no habría mucho problema en el uso del controlador de versiones, pero resulta que cuando los integrantes del grupo que están encargados de la integración del proyecto están trabajando, los encargados del diseño se dieron cuenta que había que realizar unos cambios y casualmente están trabajando el mismo archivo que los integrantes de integración; ambos obtienen el archivo a modificar, realizan sus cambios y tratan de subir los cambios al servidor principal, el grupo de diseño sube su archivo sin problemas pero cuando el grupo de integración termina e intenta subir el archivo les indica el controlador de versiones que hay problemas al subir el archivo. Por qué hay un problema? Porque la versión a subir no está actualizada con la ultima versión que se subió al repositorio (faltan los cambios que hicieron los de diseño), entonces que hacer en estos casos? Dependiendo de cómo lo maneje el controlador de versiones pero en general la solución es actualizar el archivo local a la última versión, aplicar los cambios y trasladarlos al repositorio.

Cuáles son los controladores de versiones que encontramos en el mercado?
Existen muchos controladores de versiones, pero para no venderles uno en específico, les dejo un par de links que tienen el listado de controladores de versiones que existen y sus respectivas características:
http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/
http://en.wikipedia.org/wiki/Comparison_of_revision_control_software

Personalmente puedo aconsejar el uso de Git junto con GitHub y CVS (el cual uso constantemente pero más adelante les estaré comentando por que preferiría utilizar Git en mi día a día en lugar de CVS).

Que necesito para utilizar controladores de versiones?
Para el uso de controladores de versiones es necesario contar con un servidor para colocar el repositorio de datos, una herramienta para controlar las versiones de sus archivos y comunicación a la red en donde se encuentra el servidor del repositorio para estar en constante contacto con los archivos que se estarán modificando tanto de forma local como global.

Comandos básicos de un controlador de versiones

Add: agrega un archivo al repositorio de archivos. Al ejecutar el comando ‘add’ no se está creando una nueva revisión, únicamente se agrega al repositorio. Si se quiere crear una version del archivo entonces es necesario ejecutar el comando ‘commit’.

Commit: crea una nueva revisión del archivo en el repositorio.

Tag: se utiliza para rotular una versión con cierto nombre de tal forma que podamos encontrarlo en un futuro.

Branch: se utiliza para manejar distintas versiones de un mismo archivo y que caminen con distintos cambios en la evolución de las versiones del archivo.

Update: actualiza un archivo local a cierta versión, tag o branch.

Diff: se utiliza para comparar dos versiones de un archivo, pueden utilizarse revisiones, tags o branches.

Check-out: crea una copia local del repositorio.

Como utilizar un controlador de versiones?
Luego de tener el repositorio listo, configuramos el cliente del controlador de versiones en nuestra maquina, descargamos el repositorio en una maquina local y empezamos a trabajar en nuestros archivos. Cuando tenemos algún cambio listo para trasladar a pruebas o producción procedemos a agregar el archivo o actualizarlo al repositorio; este comando cambia dependiendo de la herramienta que se utilice. Si el archivo es nuevo necesitamos agregarlo y hacer ‘commit’, si el archivo ya existía entonces simplemente hacemos ‘commit’. Si un archivo cuenta con distintos tags entonces luego de hacer commit se agrega la ultima revisión al tag o branch que utilicemos (solo si es necesario).

Por ejemplo:
Tenemos en desarrollo dos archivos: index.php el cual ya existia y hemos estado trabajando desde hace unas semanas, pero nos dimos cuenta que necesitamos un archivo que se llama images.php. El archivo index.php se encuentra en los tags ‘develop’, ‘testing’ y ‘production’, por lo que antes de actualizar la versión de desarrollo, debemos corroborar que el archivo se encuentre en esas ramificaciones, que los únicos cambios sean los que se quieren trasladar al repositorio y cuando sea así se hace ‘commit’, luego se puede hacer tag a testing y si los cambios con producción son los que se quieren trasladar entonces se procede a realizar el tag a producción y update en el servidor de producción.

Si el archivo es nuevo entonces antes que nada se debe limpiar el tag del archivo, luego se agrega mediante el comando add, procedemos a realizar commit y si es el caso de nuestro ejemplo entonces lo agregamos al branch o tag, subimos la versión del archivo local al branch o tag y procedemos a realizar los pasos anteriores para trasladar los cambios a los servidores de pruebas y producción.

En el próximo les estaré escribiendo a detalle sobre el uso de CVS y Git & GitHub.

 

Autor :  Moykey