Mini Tutorial de Mercurial

11 diciembre 2010 Etiquetas: ,
6

Por:  María

Siempre es útil tener sincronizados todos tus proyectos en la nube, no sólo por tener una copia de seguridad siempre actualizada, sino también por tener la misma copia sincronizada entre varias personas o si tienes varios  ordenadores o sistemas operativos. Di adiós a los USB, discos duros, archivos mandados por e-mail... ¡Es mucho más fácil!

Para lograr esto tenemos múltiples herramientas, entre ellas los sistemas de control de versiones multiplataforma Mercurial o Subversion. No entraré en cuál de ellos es mejor, simplemente explicaré cómo usar Mercurial que es el que yo uso y con el que estoy bastante contenta hasta la fecha.
Para crear un repositorio Mercurial necesitamos algún hosting en la red. En mi caso utilizo bitbucket.org por tres razones principales: es gratis, tiene capacidad de almacenamiento ilimitada y los repositorios pueden ser privados protegidos por contraseña, pudiendo ser compartidos por hasta 5 usuarios.

Para crear un repositorio en bitbucket.org, debes crearte una cuenta aquí. Una vez creada la cuenta podremos crear un repositorio en Repositories -> Create new repositorie. Aquí sólo hace falta introducir un nombre para el repositorio y marcar la casilla Private en el caso en que quieras que tu repositorio sea privado.

Una vez creado el repositorio se entra en su página principal, en la que encontraremos las pestañas Overview (descripción general del repositorio), Downloads (espacio en el que puedes subir archivos para que puedan ser descargados posteriormente), Source (vista de todos los archivos y carpetas del repositorio), Changesets (resumen de todos los cambios hechos en el respositorio), Wiki (puede ser editado como documentación de tu proyecto), Issues (peticiones y sugerencias de unos usuarios del repositorio a otros) y Admin (opciones de administración del repositorio).
Se puede añadir un nuevo usuario al repositorio desde Admin, simplemente añadiendo su nick de bitbucket.org en la sección de "Readers", "Writers" y/o "Administrators", según los permisos que quieras que tenga el nuevo usuario.

En el servidor de bitbucket.org es donde tendremos nuestra copia remota del repositorio, pero para trabajar con él tendremos que hacernos copias locales en las máquinas que queramos. Para ello deberemos tener instalado Mercurial, lo cual se hace facilmente de la siguiente manera:
  • GNU/Linux: En sistemas basados en Debian, simplemente apt-get install mercurial como root. En el resto no lo he probado, pero seguramente estará también en repositorios directamente.
  • Windows: Nos tendremos que descargar el .exe (o .msi, a nuestro gusto) desde la página de descargas de Mercurial. Después habrá hacer una instalación típica de Windows (siguiente, siguiente, siguiente...).
Una vez tenemos instalado Mercurial en nuestro sistema se utiliza igual sea Windows o Linux, esto es, desde consola (en Windows ejecutar cmd para abrir la consola).

Para hacernos una copia local del repositorio deberemos utilizar la sentencia que aparece en la página de bitbucket.org bajo la descripción del repositorio, que será de la forma

hg clone https://<usuario_actual>@bitbucket.org/<propietario_repositorio>/<nombre_repositorio>

Tras ejecutar este comando e introducir la contraseña de nuestro usuario se creará una carpeta con el nombre de tu repositorio en el directorio actual. Ésta será la raíz de tu repositorio local. Ahora podrás crear, copiar y modificar archivos y carpetas de la manera normal.

Para poder subir cambios al repositorio remoto desde nuestro repositorio local deberemos especificar nuestro usuario Mercurial, creando un nuevo archivo con los datos necesarios:

  • En GNU/Linux deberemos crear un archivo de nombre .hgrc en nuestro directorio home.
  • En Windows abriremos el archivo de nombre hgrc (sin el punto inicial) en el directorio del repositorio creado, dentro de la carpeta .hg 
En ese archivo deberemos añadir las siguientes líneas:

[ui]
username = Nombre Completo <email@loquesea.com>
verbose = True

Para tener bien sincronizado el repositorio sin problemas hay que seguir estos sencillos pasos:
  • Antes de comenzar a trabajar con los archivos del repositorio hay que recordar siempre actualizar tu versión local ejecutando
hg pull -u
  • Para subir un nuevo archivo creado o copiado a las carpeta del repositorio remoto, utilizar la sentencia
hg add <ruta_del_archivo>
  • También podemos añadir todos los nuevos archivos con la sentencia
hg add
  • Tras finalizar la sesión de trabajo, para sincronizar todos los cambios en archivos existentes y los add que hayamos hecho habrá que ejecutar un commit:
hg ci
    Si esta sentencia devuelve un error "abort: no username supplied (see "hg help config")" es que no hemos creado bien el archivo hgrc que he nombrado antes. Al realizar este comando por primera vez en GNU/Linux nos dará una serie de alternativas de editores de texto entre los que tendremos que elegir uno, en Windows directamente saldrá un bloc de notas. En el editor de texto que salga habrá un resumen de todos los cambios que se están subiendo al repositorio, y en la parte de arriba deberemos escribir alguna descripción de dichos cambios. Al guardar y cerrar el editor de texto se guardarán los cambios del commit. Si no escribimos nada no se guardarán los cambios.
  • Por último, para escribir los cambios guardados en el commit al repositorio habrá que ejecutar la sentencia
hg push

¡Y ya está! Podremos crearnos todas las copias locales del repositorio que queramos, y si seguimos los pasos cada vez que queramos trabajar con una de las copias del repositorio lo tendremos siempre bien sincronizado y actualizado en todos nuestros equipos.

Hay que tener cuidado de hacer siempre un pull antes de hacer cambios a nuestro repositorio local, puesto que si subimos cambios de un repositorio local no actualizado al repositorio remoto crearemos un merge, un error que puede ser difícil de arreglar. Os avisará la próxima vez que vayáis a actualizar el repositorio. Si os pasa podéis probar a ejecutar la sentencia 
hg merge
porque si el problema no es muy gordo se puede arreglar automáticamente con esta sentencia. No os preocupéis, teniendo cuidado no pasará esto, y aunque pase con un poquito de paciencia se puede arreglar ;-)

Espero que os haya servido el mini-tutorial y que os sirva para empezar a utilizar y a disfrutar de las ventajas de Mercurial. Para más información, podéis buscar en la documentación oficial (en inglés) de Mercurial.

6 comentarios:

  1. Sete says:

    Genial! millón de gracias!
    Una pregunta por favor. ¿Se puede hacer check in - check out para que otros usuarios no puedan modificar un archivo hasta liberarlo?

    Gracias!

    Sete.

  1. María says:

    He estado buscando y por lo que yo sé, es algo que no se puede hacer... Lo que puedes hacer es cambiar los permisos de los usuarios para que sólo puedan leer o también puedan escribir sobre los archivos. Esto en bitbucket se hace en el apartado "Admin".

    ¡Gracias por leernos!

  1. Sete says:

    Jarl! Pues que mala suerte la mía!!! Lo que necesito es poder trabajar en equipo sin problemas de integración. Actualmente, en la empresa para la que trabajo usamos SourceAnywhere, pero claro, no es gratuito ...

    http://www.dynamsoft.com/Products/SAW_Overview.aspx

    Tendré que seguir buscando...

    Enhorabuena por el blog! Me va enganchando
    Muchas gracias!


    Sete.

  1. RushMata says:

    Muy Clarito Todo, Gracias por la información, me viene Genial para un Trabajo que tengo que exponer acerca de Mercurial.

  1. JULY says:

    Hola. gracias por tu artículo. Tengo una pregunta, por lo general estás usando un hosting para el repositorio. Si yo quiero utilizarlo solamente localmente de que forma se crearía el repositorio con hg clone? Mil gracias.

  1. Anónimo says:

    como se deja de compartir una carpeta con mercurial para compartir otra