Si quieres tener un control de versiones de un proyecto puedes usar muchas herramientas. Existe el súper popular git o también Mercurial a través de TortoiseHg.
En esta guía rápida veremos cómo usar Tortoise HG para:
- Respaldar un proyecto
- Agregarle cambios
- Ignorar archivos
- Revertir cambios
- Hacer un branch al proyecto
Instala Tortoise HG
Para instalarlo debes descargarlo de su página:
https://tortoisehg.bitbucket.io
Respalda un proyecto
Mi recomendación es que tu proyecto y todos sus archivos existan en un subfólder:
└───ejemplo ---> Fólder superior
└───ejemplo ---> Subfólder
code.c
Esto es porque Mercurial genera un fólder oculto llamado .hg que se encarga de tener el historial de todos los archivos y sus cambios. No querrás que este fólder aparezca en tu IDE (Eclipse o Netbeans, como ejemplo) porque tiene muchísimos archivos que te darán lata. Mantenlo aparte.
Una vez que definiste el fólder superior con el fólder dentro de tu proyecto puedes abrir TortoiseHgG. Debes dar de alta un usuario y un email, aún cuando no vayas a hacer commits (subir código) a otros servidores. Entra a Settings y dalo de alta. Un ejemplo: John Doe <johndoe@fake.com>.
Selecciona New Repository...
Elige el fólder superior:
Dale Create sin cambiar las demás opciones.
Te mostrará una ventana con los contenidos aún no guardados de tu proyecto.
El branch default aún no existe pero podemos inicializarlo si se selecciona. Nos dirá qué archivos nuevos entrarán al control de versiones. En este momento muestra la versión +/1 porque no se ha hecho nada aún.
Mi proyecto sólo tiene un archivo.c dentro del fólder ejemplo. También se creó en automático un archivo llamado .hgignore. Ese archivo te será de utilidad para cuando quieras ignorar archivos en tu control de versiones. Por ejemplo podrías ignorar todos los .o que se generan cuando compilas tus C.
Hagamos nuestro primer commit. Selecciona ambos archivos poniéndoles la palomita. En el cuadro de la derecha pon un comentario para tu commit. A mí me gusta ponerle una versión, pero puede ir cualquier texto. Finalmente presiona Commit.
Te pedirá que pongas tu nombre, dile que sí. Te preguntará si quieres agregar los archivos seleccionados, dile que también.
Y listo, tendrás un respaldo local de tu primer versión del proyecto. Este existirá sobre el branch default.
Agrega cambios a tu proyecto
Tu proyecto siempre está mejorando... digamos que haces un cambio en un archivo... Tortoise se dará cuenta cuando presionas el botón de Refresh mientras estás sobre el *Working directory*. En mi ejemplo actualicé el texto del printf. Te lo reportará al dar click sobre ese archivo. Si tuvieras instalado un visor de diferencias puedes usarlo dando click derecho sobre el archivo.
Como ese cambio queremos respaldarlo podemos entonces hacer un nuevo commit. Dale a la palomita, introduce un texto para el commit y dale Commit.
Ignorar cambios
Ignorar archivos o fólders es muy fácil. Al darle refresh Tortoise no te mostrará esos archivos. En mi ejemplo agregué un code.o que simula la salida de la compilación del C y una imagen. Sólo me interesa respaldar la imagen así que le daré click derecho al .o y le diré a Tortoise que lo ignore. Y seleccionaré la imagen para que me la guarde en un nuevo commit.
Verás que el archivo .hgignore se actualizó también. Asegúrate de que también tiene palomita para que en los siguientes commits Tortoise siga ignorando ese code.o. Puedes usar comodines e ignorar todos los .o e incluso puedes ignorar fólders completos. Es cuestión de que experimentes para que veas cómo lograrlo.
Revertir cambios
Digamos que cometiste un error o que simplemente quieres ir a una versión anterior de tu código. En mi ejemplo cambié el texto de code.c.
Simplemente doy click derecho al archivo que quiero restaurar y le digo Revert.
Revert with backup - creará una copia temporal del archivo actual por si te arrepientes y restablece el archivo.
Discard changes - sólo restablece el archivo.
Regresar a un commit anterior
Es posible regresar a un snapshot de tu proyecto. Debes ser cuidadoso porque si hay archivos que quieras mantener debes guardarlos en un commit antes de moverte a uno anterior. En mi ejemplo me iré a la versión 0.1. Sólo hay que dar click derecho sobre el commit deseado y darle Update...
Usa las opciones que muestro a continuación... recuerda: borrará todo cambio actual para irse al pasado.
La grafiquita ya muestra cómo estamos sobre un commit anterior y nos dice que no es el head.
Creando un nuevo branch
Digamos que ésta versión era estable y que quieres continuar trabajando sobre ella, pero quieres que tenga otro branch para que sepas sobre qué proyecto estás. Creemos el branch y llamémosle stable. Da click en Branch: default y dile que quieres uno nuevo.
Ingresa un texto para el commit. En Mercurial los branches crean commits. En git no.
Ya estando en tu nuevo branch puedes hacer nuevos commits o regresarte al branch default. Recuerda guardar tus cambios con commits antes de moverte en el tiempo.
Y esta es la guía rápida. Dominar Tortoise no toma tiempo. Sólo ten cuidado cuando te muevas entre branches y aprovecha la herramienta al máximo.