xmanoel@


Own Private Repository

Me ha tocado trabajar con un entorno de programación de estos de Programación Visual (una cosa parecida al VPL de Microsoft). No voy a extenderme mucho sobre lo que opino de estos entornos, pero ya cuando estaba en la Universidad (que fué hace mucho tiempo) hablaban de estos lenguajes que se programaban con cajitas y flechas, y los comerciales de los que los vendían (caros) siempre decían 'y es tan fácil que no va a hacer falta casi programadores'. (Yo veo que cada vez hay más gente trabajando de programadora, así que imaginad el éxito que tienen estas cosas).

No me sorprendió nada cuando me dijeron mis compañeros: 'cuidadín con este entorno que a poco que te despistes se carga el código que ya estaba escrito' (típico de estas herramientas que 'te lo dan todo hecho'). Así que lo primero que pensé antes de programar nada fué: "Necesito algún control de versiones o algo" (bajo Windows).

Mi idea era no complicarme nada y buscar alguna utilidad gratuita para guardar versiones: alguien tenía que haber hecho esto. Pero nada, sólo encontré una y despues de ver su página web decidí que ni gratis (que lo es) metía eso en mi ordenador (nunca una página web a sido tan aclaradora sobre el programa que promociona). Desechado esto, pensé en el veterano RCS, pero ver que había una versión para OS/2 me hizo pensar que los binarios eran demasiado veteranos. (Por otro lado me acordé lo coñazo que es el RCS para gestionar directorios o cualquier otra cosa así que nada).

Pero aún me quedaba una solución (y parecía buena, aunque exagerada): los Sistemas de Control de Versión Distribuido. Bueno, en principio parecía un poco exagerado (estos programas están hechos para proyectos en los que codifican cientos y cientos de programadores) pero una de las funciones que tienen es que permiten que lleves control de versiones de los cambios que vas haciendo en local. Y no sólo lo permiten, si no que los 3 que he visto lo hacen muy fácil: git,Bazaar y Mercurial

(Recuerdo una vez más que todo esto que escribo es sobre controlar versiones en Windows puro y duro - con el CYGWIN sería fácil)

El git lo descarté porque la versión para Windows no parece ser oficial. El Bazaar fue el primero que probé (en versión linea de comando) porque tenía ya instalado Python. Pero el que voy a recomendar es el Mercurial pre-compilado para Windows por 3 razones: es muy pequeño (9 Mb), se instala fácilmente y no tiene dependencias externas.

(Todos estos programas tienen su respectivo -no se si estable- versión de Tortoise, con lo que se puede usar graficamente desde el Windows Explorer. Pero en mi caso paso de instalarlo: ya tengo el TortoiseCVS y el TortoiseSVN por necesidades del trabajo y ya son suficientes cosas para el menú del botón derecho. Aparte, para trabajar con un repositorio local no hace falta herramientas gráficas, ni tiene sentido crear branches ni hacer merges ni nada.)

Resumen: Si quieres un sistema para guardar versiones (sin necesidad de servidor) de algo en Windows (sea código como yo, o un documento Word que vas cambiando, o casi cualquier cosa) recomiendo que pienses en Mercurial para Windows

Y ya puestos, aquí va la chuleta para usar de manerea mínima el Mercurial (nota, el comando se escribe hg).

Ir al directorio en que se quieren guardar versiones


> hg init

Definir los ficheros que se quieren excluir del control de versiones, creando un fichero con nombre .hgignore. El fichero podría ser así como este ejemplo:


syntax: glob
*.class
*.jar
*.bak
*~

Una vez hecho esto, añadir todos los ficheros al control de versiones:


> hg add

Guardar los cambios:


> hg ci

Y ahora trabajar modificando los ficheros que quieras.

Cada poco comprobar que hay cambios con respecto a la versión guardada:


> hg status

Cuando parezca necesario volver a guardar cambios:


> hg ci

Ver toda la lista de versiones guardadas (si se ponen mensajes descriptivos al guardar, la lista es descriptiva por si misma):


> hg log

Para volver al una versión anterior y deshacer algún desastre:


> hg revert -r 3

Y esto es solo el uso básico. Una de las cosas que mas me han gustado de Mercurial es que se pueden definir alias, así que por ejemplo yo puedo hacer hg winmerge -r 3 -r 4 y ver los cambios con el WinMerge. Así que incluso desde línea de comandos tiene potencia de sobra.

(Nota final, gran parte de la inspiración de recurrir a uno de estos programas viene de cuando Iago usaba el bazaar para gestionar las versiones de los libros que escribía en Linux, así que yo pensé que en Windows tambien podría hacer lo mismo).

14 April 2009