tutorial español control version-control mercurial commit

version control - español - Mercurial(hg) compromete solo ciertos archivos



mercurial vs git español (4)

Estoy intentando comprometer solo ciertos archivos con Mercurial. Debido a que hg tiene auto-agregar cada vez que trato de confirmar un cambio, quiere enviar todos los archivos. Pero no quiero eso porque ciertos archivos aún no están "listos".

Ahi esta

hg commit -I thefile.foo

pero esto es solo para un archivo. La mejor manera para mí sería si puedo desactivar el auto-agregado como en Git. es posible?


A partir de 3.8 también puede usar hg commit --interactive para seleccionar los archivos (antes de 3.8 puede usar la extensión crecord para una funcionalidad similar). La --interactive (o simplemente -i ) hará que hg le --interactive los archivos que desea incluir en la confirmación. Como una ventaja adicional, puede incluir / excluir fragmentos dentro de los archivos.

Aquí hay un ejemplo de cómo se ve la interfaz. Tenga en cuenta que esta es una captura de pantalla anterior (de crecord en realidad) por lo que la interfaz ha cambiado ligeramente (pero los conceptos básicos son los mismos).

Tenga en cuenta que para obtener esa interfaz necesita la interfaz de curses habilitada. Puede hacer eso para una sola ejecución con hg commit --config ui.interface=curses --interactive o generalmente agregando lo siguiente a su .hgrc :

[ui] interface = curses



Puede especificar los archivos en la línea de comando, como tonfa escribe:

$ hg commit foo.c foo.h dir/

Eso solo funciona y eso es lo que hago todo el tiempo. También puede usar el indicador --include que ha encontrado, y puede usarlo varias veces de esta manera:

$ hg commit -I foo.c -I "**/*.h"

Incluso puede usar un fileset de archivos para seleccionar los archivos que desea confirmar:

$ hg commit "set:size(1k - 1MB) and not binary()"

No hay ninguna configuración que desactivará el comportamiento de autoañadir y hará que Mercurial funcione como lo hace Git. Sin embargo, la extensión mq podría ser de interés. Es una extensión avanzada, pero te permite hacer

$ hg qnew feature-x # create new patch $ hg qrefresh -s foo.c # add a file to the current patch $ hg qrefresh -s bar.c # add another file to the patch $ hg qfinish -a # convert applied patches to normal changesets

Realmente, yo no uso MQ para este propósito, ya que creo que es suficiente con especificar los nombres de los archivos en la línea de comando.


Si desea enviar algunos archivos y excluir muchos otros, enumere explícitamente los archivos que desea confirmar. -I es necesario si desea utilizar patrones en lugar de archivos.

Si desea enviar muchos archivos y excluir solo algunos archivos, usar -X es más conveniente.

Por ejemplo, dado un repositorio que contiene "file_1", "file_2" y "file_3", los siguientes son equivalentes, pero este último es más fácil / más rápido de escribir:

hg commit file_1 file_2 hg commit -X file_3