viernes, 25 de enero de 2013

La mejor forma de no perder nada: Control de versiones

Estas revisando tu código un día, para limpiar y eliminar los archivos que ya no necesitas. Borras archivos, eliminas algunas funciones que no usas, y te deshaces de las viejas funciones que ya no necesitas. Ah! Perfecto! Todo ha quedado muy bonito y limpio, Estas satisfecho.

Algunas semanas después inicias un nuevo proyecto, empiezas a trabajar y como buen programador empiezas a reutilizar el código de tus anteriores trabajos. De repente te acuerdas de una función que hiciste hace tiempo y que parece que necesitaras, pero, oh! no!, la borraste por que creíste que no la utilizarías. En fin tendrás que volver a rehacerla, tiempo perdido, pero…

 

Control de Versiones Al Rescate

 

La situación anterior es muy común, también entre los profesionales, nos deshacemos de código solo para darnos cuenta días después de que lo necesitamos. Para esas circunstancias se crearon los programas de control de versiones, son sistemas que mantienen un registro de la vida de un proyecto. Es como una maquina del tiempo que nos permite viajar al pasado de un archivo o proyecto y recuperar piezas de código o archivos que borramos o modificamos tanto que son irreconocibles del original.

La forma cutre de control de versiones es la que tienen algunos artistas, cada día realizan una copia del archivo sobre el que trabajan y siguen trabajando, esa es la base del control de versiones. La forma más refinada es usar un programa que se dedique a comprobar si se han modificado los archivos, añadir nuevos archivo al proyecto, etc. Recomiendo que leas el siguiente link de la Wikipedia antes de continuar, para saber más del control de versiones.

BitBucket y Mercurial

 

En mi proyecto voy a utilizar el sistema de control de versiones Mercurial, mas concretamente, usare un cliente para Windows TortoiseHg, que me permitirá realizar las tareas mas comunes desde el menú contextual (botón derecho del ratón ) del sistema de archivo de Windows. Así que nos descargaremos la versión de TorotiseHg para nuestro sistema operativo y lo instalaremos.

Aunque podríamos crear un repositorio maestro en nuestro propio sistema, corremos el riesgo de perder información en caso de un accidente fatal de nuestro ordenador (como que se queme literalmente ), así que es mejor tener nuestra copia maestra en un servidor remoto fuera de nuestra casa, Los mismos chicos de Mercurial nos ofrecen el servicio BitBucket, que nos permite tener tantos proyectos privados o publico gratuitos siempre que sean hasta  de cinco programadores los que tengan acceso.

Creando un repositorio

 

Ve a la pagina de BitBucket y crea una cuenta gratuita. Apunta bien el nombre y la password que usas por que luego la necesitaras para subir cosas al repositorio remoto. Te enviaran un email de confirmación a la dirección de correo que les hayas indicado.

Una vez creada y creada la cuenta, entra en ella desde la pagina de BitBucket. En la parte superior tienes un menú llamado “Repositories”. Desde hay puedes crear un nuevo proyecto con la opción “create repositorie”

bitbucket

Esto te llevara a definir tu nuevo proyecto donde tendrás que introducir el nombre de tu proyecto, una breve descripción, establecer si tu proyecto es privado (solo tu y los que invitéis al proyecto podrán ver, subir y bajar datos del repositorio ) o publico (todos podrán ver y bajar cosas de tu repositorio, pero solo tu y tus invitados podrán subir cosas ).

Como tipo de repositorio usaremos Mercurial, ya que es el cliente que hemos instalado, Git es otro tipo de cliente para repositorios distribuidos. El issue traker y la wiki conviene activarlos si eres mas de uno el que va a trabajar, o si tu proyecto es publico para llevar un control sobre los fallos que se van encontrando en el proyecto.

La wiki, te puede servir para documentar tu proyecto, pero eso ya es decisión tuya.

bitbucket3

Cuando estemos ya dentro de la pagina de control de nuestro proyecto tendremos que copiar la dirección que aparece en el recuadro, que es la URL que corresponde a tu repositorio y necesitaremos mas adelante.

Preparando la copia de trabajo

 

Si te acuerdas de mi anterior entrada, tengo en mi disco duro un único directorio de trabajo, bien este directorio es mi proyecto de Mercurial que se encuentra como repositorio privado en BitBucket, así mi recomendación es que hagas lo mismo, aunque puedes dividir cada proyecto en distintos repositorios.

Para poder empezar a trabajar con Mercurial lo primero es crear la carpeta donde vas a poner en tu disco duro una copia del repositorio remoto. Yo cree una llamada “Mercurial”. Pulsando el Botón derecho del ratón obtenemos el menú desde donde le diremos a Mercurial que clone el repositorio que hemos creado en BitBucket para empezar a trabajar. Para eso usaremos la opción “clone”

bitbucket2

Entonces deberán introducir la URL de tu repositorio en donde se solicita el “source” y pulsar el botón de “clone”, te pedirá que metas tu password de usuario para continuar. Con esto ya habríamos vinculado el repositorio remoto con el repositorio local de nuestro disco duro. A partir de entonces ya se puede empezar a trabajar.

bitbucket4

 

Lo que se debe y no se debe subir

 

Se debe subir todos los archivos que creas tu, es decir el archivo de proyecto, los archivos de cabecera, los de código fuente, la documentación, etc. Nunca de suben los archivos que el compilador crea a partir de estos archivos, como los archivos objeto, los archivos intermedios que se puedan crear con scripts, etc. Es decir toda la “basura” que se puede reproducir a partir de los programas y script de tu sistema. Otra cosa que nunca se debería subir es el ejecutable. Eso lo crea el compilador como paso final.

Hay que tener en cuenta la forma de trabajar con Mercurial, cada archivo que añadas con la opción “add…” o cada “commit” que hagas solo se realizara sobre el repositorio local de tu disco duro

.bitbucket5

Para que tu trabajo se guarde de forma segura en los servidores de BitBucket tienes que sincronizar toda la carpeta, en mi caso la carpeta Mercurial.

bitbucket6
bitbucket7

Una vez introducida tu password se empezaran a transmitir a tu repositorio en BitBucket toda la información, cambio etc. que tengas en tu repositorio local, esto solo conviene hacerlo cuando has terminado de implementar alguna funcionalidad por completo.

Bueno con esto termino la parte mas aburrida, la preparación del entorno de trabajo.

Gracias por tu atención. Nos vemos pronto.

No hay comentarios: