mercurial diff changeset

Mercurial: ¿todos los archivos que cambiaron en un conjunto de cambios?



diff changeset (7)

¿Cómo puede determinar todos los archivos que cambiaron en un conjunto de cambios determinado?

No estoy buscando un diff en este caso, solo una lista de add / remove / modifications.

hg log -vprX hace una lista de diffs pero solo quiero los archivos.


Revisión comprometida actual

hg status --change .

. es la abreviatura de la @HEAD actual, al igual que @HEAD en Git

Revisión actual no comprometida

hg status

Revisión arbitraria comprometida

hg status --change REV_ID


Encontré esta pregunta a través de Google para un concepto similar. Para mostrar todos los archivos que cambiaron a través de una gama de conjuntos de cambios, es tan fácil como:

hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}/n" | sed -e ''s/ //n/g'' | sort -d | uniq

  1. hg log -r [start rev]:[end rev] --template "{file_mods}{file_adds}/n" le mostrará una lista de cada archivo cambiado o agregado en cada conjunto de cambios, desde [inicio rev] hasta [fin rev ], con los archivos de cada conjunto de cambios en una nueva línea. Cambie {file_mods}{file_adds} con {files} para mostrar todos los archivos modificados, agregados o eliminados.
  2. sed -e ''s/ //n/g'' dividirá todos los archivos para mostrar en líneas separadas y
  3. sort , er, ordena la lista para que podamos filtrar la lista con uniq
  4. uniq filtrará la lista para eliminar duplicados, archivos que cambiaron en más de una revisión.

Sé que esta pregunta es antigua y me sorprende que nadie haya ofrecido el código modificado OP. Obtuve una lista de archivos modificados / agregados / eliminados (no etiquetados, que es lo que sin embargo) simplemente ejecutando hg log -v . O lo que realmente necesitaba es hg log -v -l5 para ver los archivos que se han modificado / agregado / eliminado en las últimas 5 confirmaciones (incluidas las que aún no he enviado al repositorio).


Sé que la pregunta es para un solo conjunto de cambios, pero si desea obtener todos los archivos modificados para una gama de conjuntos de cambios, puede hacer

hg status --rev 1 --rev 10 -m


Si desea enumerar solo los archivos que han cambiado, entonces debe usar el "comando de estado". A continuación se enumerarán los cambios en los archivos en la revisión REV.

hg status --change REV


Si es como la mayoría de las tiendas, usa un sistema de tickets para rastrear los cambios. Si conoce el número del ticket y desea encontrar todos los commits asociados con ese ticket (suponiendo que incluya el número del ticket en el mensaje de confirmación), puede usar:

hg log -k TICKET_NUMBER

Esto muestra todas las revisiones asociadas con el ticket. Sin embargo, no enumera los archivos. Podría utilizar una de las respuestas anteriores para obtener la lista de archivos asociados con las revisiones.

Para hacerlo más sencillo, al combinar la información de las respuestas anteriores, puede hacer lo siguiente para buscar confirmaciones, incluidos los archivos modificados:

hg log -vk TICKET_NUMBER


Simplemente elimine p de su hg log -vpr mostrará la lista de archivos. -p significa mostrar el parche. También puede usar una template para formatear la salida a su gusto.