Search

Search this site:

Para mis documentos, movilidad y administración

Hay más de una manera de abordar el tema de la movilidad - Podemos pensar, por un lado, en los dispositivos que nos permiten movernos junto con nuestra información (PDAs, teléfonos celulares cada vez más inteligentes, Tablet PCs, computadoras portátiles cada vez más compactas y potentes - Incluso la ya omnipresente “llave” USB es un dispositivo fundamental para la movilidad diaria), o por otro lado podemos referirnos a las aplicaciones que permiten que nuestros datos se muevan a donde nosotros vayamos, dándonos la posibilidad de asumir la movilidad como un hecho, aún si salimos de casa sin un sólo artículo electrónico - A fin de cuentas, lo que buscamos es no tener que acordarnos de nuestros datos, sino que saber que están resguardados y a nuestra disposición en todo momento que los necesitemos.

En esta ocasión voy a platicarles acerca de una herramienta que cambió mi vida como pocas lo han hecho, y se ha vuelto desde hace ya varios años mi fiel compañera a donde sea que yo viaje: Subversion (http://subversion.tigris.org/).

Antes de conocer a Subversion y herramientas similares, nos acostumbramos a ver a nuestros documentos como pedazos independientes de información. Cada archivo es un universo aparte, y cada vez que lo modificamos, en realidad nuestra computadora está creando un archivo nuevo que simplemente coloca en el lugar del anterior. Lo que es peor, ¿a quién no le ha pasado que sale de casa muy confiado con todos los archivos en la memoria USB… Tan sólo para toparse con que traemos una versión anterior de los archivos a la que nos tomó tantas horas de trabajo? O cuando somos varias personas trabajando en un proyecto grande, ¿cómo podemos trabajar cada cual a sus anchas sin el constante temor de estar pisoteando los cambios que hizo alguien más? Todos estos problemas los resuelven los diversos VCS (Version Control Systems, sistemas de control de versiones) - Y mi VCS favorito es Subversion.

Subversion opera bajo un esquema cliente-servidor - Debemos instalarlo en una computadora fija, que será el punto central, y podemos trabajar con él desde la cantidad que queramos de dispositivos fijos o móviles. Claro, podemos permitir el acceso a cuantos usuarios queramos, ya sea sólo para lectura o incluso con derecho a modificar la información.

Con Subversion, ya no vamos a hablar de nuestros documentos meramente como un conjunto no organizado de archivos - Manejaremos un depósito, que tiene -como un todo- diferentes versiones que nos permiten consultar “fotografías” de nuestro trabajo en el tiempo. Puede incluso llevar ramas y etiquetas. Las diferentes ramas, claro, pueden bifurcarse o unirse cuando lo juzguemos necesario. ¿Qué significan todos estos conceptos?

Depósito
El directorio que contiene a todos los archivos relacionados, así como la información interna de Subversion para manejarlos
Documento
Cada uno de los archivos que existen dentro de nuestro depósito, independientemente del tipo de archivo de que se trate.
Versión
Siempre que hacemos un cambio a nuestro depósito, aumentará el número de versión del depósito completo. Esto nos permite ver, por ejemplo, cómo estaba nuestro proyecto completo en determinada fecha, o qué archivos fueron modificados ese fatídico día en que no nos tomamos nuestra taza matutina de café.
Rama
Muchas veces se nos presenta la disyuntiva de qué dirección tomar en un proyecto - Al crear una rama (o, siguiendo el argot del sistema, al bifurcar un proyecto), con Subversion no sacrificamos a una posible salida por otra. Podemos continuar desarrollando en ambos sentidos, y posteriormente evaluar los resultados para volver a unificar las ramas.
Etiqueta
Cuando llegamos a un punto importante en un proyecto, es importante marcar a nuestro depósito con una etiqueta - De este modo, podemos rápidamente volver a exactamente esa versión sin tener que estarla buscando.

¿Cómo se usa? Es muy sencillo - Lo mejor es que la mayor parte del tiempo simplemente trabajaremos como si no estuviera ahí. Sólo debemos recordar tres reglas: Actualizar nuestra copia local al inicio de toda sesión de trabajo, y “empujar” los cambios al servidor tan pronto estén listos. La manera más simple de hacer esto es por medio del cliente de línea de comando, por medio respectivamente de las órdenes “svn update” y “svn commit” - Pero, claro, no es la única manera.

Un componente muy interesante de los sistemas de control de versiones es el de búsqueda de diferencias - ¿Qué archivos modificamos en nuestro depósito en determinado periodo? Y lo que es más, ¿Qué cambios hicimos en ellos? Subversion nos facilita esta información de un sólo golpe, como podemos apreciar en las imágenes que acompañan al artículo. Claro está, toda herramienta tiene su un nicho para el cual funciona de forma óptima; notarán que para utilizar la funcionalidad de comparación entre versiones, los archivos que maneje Subversion deben ser basados en texto - Nuestras páginas Web escritas en HTML, documentos XML, los programas que escribamos en nuestro lenguaje favorito - Obviamente, Subversion no está diseñado para mostrarnos las diferencias entre dos imágenes o entre dos hojas de cálculo.

Uno de los puntos más importantes de su desarrollo es que, más allá de ser sencillamente una aplicación completa y cerrada, Subversion sigue claramente las directrices de diseño en el software libre: Está diseñado como un conjunto de bibliotecas, pensado para ser embebido en programas que puedan aprovechar su potencial y presentarlo de una forma unificada y adecuada para sus usuarios - Hay muy diferentes programas cliente que, utilizando el mismo código (y, por tanto, sin tenernos que preocupar acerca de su interoperabilidad) nos permiten tener acceso a toda la funcionalidad de Subversion.

El primer cliente con el que nos encontraremos, y el más conveniente para consultas cortas y rápidas, es el de línea de comando. Nos permite hacer rápidamente actualizaciones, envíos y comparaciones simples entre versiones - Sí, tendrás que aprenderte unos cuantos comanditos, pero verás que es, en muchas ocasiones, la manera más fácil y rápida de obtener información.

El poderoso y veterano entorno de desarrollo Emacs incluye un modo de trabajo que nos permite manejar la mayor parte de las funciones de Subversion. Podemos ver en la captura de pantalla una sesión típica.

Emacs no es el único entorno de desarrollo que ofrece integración con Subversion. Eric (http://www.die-offenbachs.de/detlev/eric.html), el IDE de Python, ofrece una interfaz muy limpia, pulida y amigable. Podemos también instalar Subclipse (http://subclipse.tigris.org/) para integrarlo a Eclipse, un robusto y completo IDE libre orientado a Java.

Pero incluso si lo tuyo es trabajar con herramientas más tradicionales, que no incluyan aún soporte para Subversion, hay clientes sencillos y completos que se encargarán de mantener nuestros archivos en el depósito. Uno de los más cómodos en Linux es eSvn (http://esvn.umputun.com/). Desde MacOS, svnX (http://www.lachoseinteractive.net/en/community/subversion/svnx/features/) es el que mejor integración nos ofrece con el entorno de Panther.

En Windows, la alternativa más cómoda y completa es TortoiseSVN (http://tortoisesvn.net/), una extensión al explorador del sistema que nos permite administrar nuestros depósitos con toda la naturalidad con que normalmente trabajamos. Además de esto, TortoiseSVN nos proporciona cómodas herramientas para entender de una sóla mirada cómo ha ido avanzando nuestro proyecto, con sus ramas y etiquetas, o las estadísticas de actividad de cada uno de los participantes. Una de las herramientas hermanas de TortoiseSVN nos permite dar, además de todo esto, un importante paso adelante - Con TortoiseDiff (http://tortoisesvn.tigris.org/TortoiseIDiff.html) podemos ver las diferencias de manera intuitiva, incluso entre archivos de contenido binario como las imágenes.

¿Suena ya demasiado bueno para ser cierto? ¡Pero si eso no es todo! Podemos también interactuar con Subversion utilizando simplemente un navegador Web - Y en esta categoría me limitaré a mencionar a algunos de los proyectos más conocidos, como WebSvn (http://websvn.tigris.org/), Insurrection (http://insurrection.tigris.org/) o Chora (http://www.horde.org/chora/); su uso es bastante similar, y elegirás uno u otro dependiendo de las otras herramientas que emplees para trabajar en tu proyecto.

Subversion implementa un esquema de trabajo tremendamente potente, y al poco tiempo de que comiences a usarlo, te costará trabajo voltear atrás y entender cómo viviste sin él hasta ahora. Es, además, un proyecto excelentemente documentado - Tenemos a nuestra disposición hasta libros completos disponibles en línea detallando su diseño y funcionamiento. Si te interesa estudiarlo a fondo, te recomiendo el libro oficial, “Version Control with Subversion”, que está disponible libremente en http://svnbook.red-bean.com/

Imagenes

Attachments

Texto original para publicación (10 KB)

Comments

2011-10-16 06:37:00

Herramienta practica

Estuve buscando una forma de organizar mis documentos de mi PC con mi iPhone por el trabajo y notas personales. Actualmente estoy guardando los documentos en mi PC y los paso luego al iPhone.

A veces no estoy frente la PC y necesito un documento actualizado que no tengo en mi móvil y lo que usted nos presenta es una buena solución para manejar todos los documentos importantes de una forma completa.

Voy a probar el TortoiseSVN con mi PC, estoy seguro que seria un gran ayuda. Gracias por el detalle, saludos.