mercurialEmpezando con mercurial


Observaciones

Mercurial es un moderno sistema de control de versiones distribuido y de código abierto. Es posible que hayas oído hablar de git, que es algo más popular hoy en día; git y Mercurial son muy comparables y ofrecen una funcionalidad similar.

Los desarrolladores utilizan Mercurial para realizar un seguimiento de los cambios en el código fuente de sus aplicaciones. Puede usarse para realizar un seguimiento de los cambios en cualquier directorio de archivos, aunque, como la mayoría de los sistemas de control de origen, funciona mejor cuando esos archivos son archivos de texto (en lugar de archivos binarios). Mercurial también permite que varios desarrolladores trabajen en el mismo directorio de código fuente simultáneamente, y administra el proceso de seguimiento de los cambios de cada desarrollador y luego fusiona esos cambios.

Versiones

Mercurial sigue un plan de lanzamiento basado en el tiempo y publica un lanzamiento importante cada tres meses, en febrero, mayo, agosto y noviembre. Un lanzamiento menor se publica cada mes restante. Tenga en cuenta que Mercurial no utiliza el control de versiones semático, por lo tanto, no hay una diferencia significativa entre 2.9.2 (la última versión de las 2.9 versiones) y 3.0.

La compatibilidad con versiones anteriores es un requisito crítico para Mercurial, por lo que generalmente es seguro simplemente actualizar sus instalaciones de Mercurial según sea necesario. Sin embargo, es una buena idea hacerlo al menos una vez cada tres meses, ya que algunas características pueden hacer que los clientes antiguos no puedan operar en repositorios más nuevos.

Las notas de la versión del proyecto detallan lo que está cambiando entre las versiones, mientras que las notas de actualización ofrecen una guía clara sobre lo que los usuarios deben tener en cuenta al actualizar.

Una selección de versiones notables:

Versión Notas Fecha
3.5 Soporte de gotas para Python 2.4 y 2.5 2015-07-31
2.1 Introduce "fases" de conjunto de cambios que permiten la modificación segura del historial 2012-02-01
1.9 Presenta una API de Command Server para admitir una mejor integración de aplicaciones 2011-07-01
1.7 El nuevo formato de repositorio admite nombres de archivos poco comunes 2010-11-01

Derivación

Cuando iniciamos nuestro trabajo por primera vez, debemos decidir si se trata de un área de trabajo separada en la que estamos trabajando o si es parte de una línea de trabajo existente. Si existe, podemos trabajar fuera de esa rama. Si es nuevo, comenzaremos una nueva sucursal.

Nuestro flujo de trabajo es:

  • hg branch MyNewFeature
  • trabajo Trabajo trabajo
  • hg commit -m "committing my changes"
  • trabajo Trabajo trabajo
  • hg commit -m "more changes"

En este punto, queremos impulsar nuestro trabajo al servidor remoto. Pero antes de empujar los cambios (ignore esto si es una rama nueva que no ha empujado antes), debemos verificar si hay algún cambio entrante en esta rama. Podemos verificar esto con:

hg incoming -b .
 

Si hay conjuntos de cambios entrantes en nuestra sucursal, debemos hacer un tirón y volver a ajustar nuestros cambios al principio de la lista de cambios.

hg pull -b . --rebase
 

Una vez hecho esto o si no hay conjuntos de cambios entrantes, podemos continuar con el Push.

Solo queremos impulsar nuestro trabajo actual, no todo lo que hemos hecho. Realmente nunca presiono todo mi repositorio, sino mi línea de trabajo actual. El razonamiento es que al empujar todo el repositorio se supone que estoy integrando múltiples líneas de trabajo. Pero solo quiero integrar mi línea de trabajo actual, y solo quiero trabajar en una línea a la vez.

Si esta es la primera vez que estoy empujando esta rama:

hg push -b . --new-branch
 

Si ya he empujado esta rama:

hg push -b .
 

El comando "-b." Significa simplemente empujar la rama actual, y no cualquier otra cosa.

Para cambiar entre las ramas de trabajo :

hg update myBranchName
 

Empezando

Ver también el Tutorial de Mercurial.

Creando un repositorio mercurial

Un repositorio de Mercurial es simplemente un directorio (denominado "directorio de trabajo") que contiene un directorio .hg con metadatos sobre el contenido del repositorio. Esto hace que Mercurial sea muy ligero y fácil de usar. Para crear un nuevo repositorio simplemente ejecute:

$ hg init project
 

Donde project es el nombre del directorio que te gustaría crear. Esto crea un directorio de project junto con un directorio de project/.hg contiene el propio repositorio.

   $ cd project
   $ echo Hello World > hello.txt
   $ hg stat
   ? hello.txt
 

Acabamos de crear un archivo hello.txt en el repositorio y hello.txt hg status (o stat para abreviar) para ver el estado actual de nuestro repositorio. Como puedes ver, hello.txt está anotado con un ? , lo que significa que Mercurial todavía no es consciente de ello. El comando add registra este nuevo archivo con Mercurial, por lo que se incluirá en la próxima confirmación.

$ hg add hello.txt
 

Ahora que Mercurial está al tanto de un archivo modificado, puede ejecutar diff para ver exactamente qué ha cambiado desde la última confirmación. En este caso, estamos agregando el contenido completo de hello.txt :

$ hg diff
diff -r 000000000000 hello.txt
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/hello.txt Sat Jul 23 01:38:44 2016 -0400
@@ -0,0 +1,1 @@
+Hello
 

Y una vez que estemos contentos con ellos y listos para revisar nuestros cambios, podemos ejecutar el commit :

$ hg commit -m "Created a hello world file."
 

Tenga en cuenta que incluimos un mensaje de confirmación con -m : si no especifica -m Mercurial abrirá un editor de texto en el que puede ingresar un mensaje de confirmación. Esto es útil si desea proporcionar un mensaje de varias líneas más largo.

Una vez que haya confirmado los cambios, ya no se mostrarán si ejecuta hg stat ya que el repositorio ahora está sincronizado con el contenido del directorio de trabajo. Puede ejecutar el log para ver una lista de confirmaciones, y -v incluye detalles adicionales como los archivos que cada confirmación tocó:

$ hg log -v
changeset:   0:b4c06cc77a42
tag:         tip
user:        Michael Diamond@Aodh <dimo414@gmail.com>
date:        Sat Jul 23 01:44:23 2016 -0400
files:       hello.txt
description:
Created a hello world file.
 

Instalación y configuración

Puede descargar Mercurial desde el sitio web del proyecto, y hay utilidades gráficas para Windows, Linux y OSX si lo prefiere a una interfaz de línea de comandos. La mayoría de los gestores de paquetes Unix incluyen Mercurial, por ejemplo en Debian / Ubuntu:

$ apt-get install mercurial
 

Puede verificar que Mercurial está instalado ejecutando:

$ hg --version
 

Preparar

Mercurial trabaja fuera de la caja, pero es probable que desee configurar Mercurial para saber quién es usted antes de continuar. Para asociar un nombre de usuario con su edición de confirmaciones ~/.hgrc (o mercurial.ini en su directorio de inicio en Windows) y agregue las siguientes líneas:

[ui]
username = Your Name <your@email.address>
 

Si no desea hacer esto, siempre puede especificar un nombre de usuario cuando se comprometa con el indicador -u , por ejemplo:

$ hg commit -u "Your Name <your@email.address>"
 

Empujando y tirando

Mercurial hace que sea fácil compartir su trabajo y obtener contribuciones de otros desarrolladores. Esto implica tres pasos clave; clonando , tirando , y empujando .

Clon

Para copiar un repositorio remoto a su disco local, debe "clonarlo". Para hacerlo, simplemente pase la URL remota desde la que desea clonar. Para clonar el código fuente de Mercurial simplemente ejecute:

$ hg clone https://selenic.com/hg
 

Esto crea un directorio hg local que contiene una copia del repositorio de Mercurial que puede compilar, editar y comprometer (aunque no puede publicar sus confirmaciones en el repositorio principal).

Halar

Una vez que tenga un repositorio desprotegido, querrá mantenerlo sincronizado ya que otros publican cambios en él. Puedes desplegar nuevos cambios simplemente ejecutando:

$ hg pull
 

Esto introduce nuevas confirmaciones pero no actualiza su directorio de trabajo, por lo que no verá ningún cambio de inmediato. Para actualizar el contenido del directorio de trabajo ejecute:

$ hg up
 

Que actualiza su directorio de trabajo a la revisión de punta (más reciente) en el repositorio.

También puede ejecutar:

$ hg pull -u
 

Para introducir nuevos cambios y actualizar el directorio de trabajo en un solo paso.

empujar

Suponiendo que tenga acceso de escritura al repositorio remoto, puede publicar cualquier confirmación que haya hecho localmente en el repositorio remoto con la misma facilidad con:

$ hg push
 

Esto carga sus cambios siempre y cuando no haya habido otros confirmaciones desde la última vez que realizó la extracción. Si su push es rechazado porque "crearía cabezas adicionales", eso significa que necesita incorporar esos nuevos cambios y fusionarlos con los suyos.

$ hg pull
$ hg merge  # this creates a new changeset merging your changes with the remote changes
$ hg commit -m "Merged in remote changes"
$ hg push
 

En la mayoría de los casos, esto es todo lo que tendrá que hacer ya que Mercurial se encarga de fusionar sus cambios automáticamente, sin embargo, a veces tendrá que resolver los conflictos de combinación manualmente (consulte el tema de fusión). Si lo necesita, siempre puede cancelar una combinación y volver a un directorio de trabajo limpio con:

$ hg up -c
 

Pero recuerda que esto es una operación destructiva; Cualquier cambio en el directorio de trabajo será borrado.