2010-09-24 17 views
76

¿Cómo se pueden determinar todos los archivos que cambiaron en un conjunto de cambios determinado?Mercurial: ¿todos los archivos que cambiaron en un conjunto de cambios?

No estoy buscando un diff en este caso, solo una lista de agregar/eliminar/modificaciones.

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

+0

Supongo que una de estas respuestas realmente responde a la pregunta :) –

Respuesta

120

Si desea mostrar sólo los archivos que han cambiado, entonces debería estar utilizando "comando de estado" A continuación se mencionan los cambios en los archivos de la revisión REV

hg status --change REV 
+7

+1, pero el OP probablemente también quiere la bandera '-n' /' --no-status'. –

+2

Para copiar fácilmente: 'hg status --no-status --change REV' – FriendlyGuy

+0

+1 Esto es mucho más fácil de escribir que' hg status --rev REV ~ 1: REV' que solía hacer. –

15

Basta con retirar p de su hg log -vpr mostrará la lista de archivos. -p significa mostrar el parche. También puede usar un template para formatear la salida a su gusto.

+3

Creo que necesitará la siguiente plantilla: --template 'files: {files} \ n' –

+1

Creo que los {archivos} son parte de la plantilla predeterminada del distintivo -v – eskhool

+2

hg log -r. --template '{join (files, "\ n")}' a newline separa los archivos – Foxichu

9

Sé que la pregunta se hace para un único conjunto de cambios, pero si desea obtener todos los archivos modificados para una serie de conjuntos de cambios, que puedo hacer

hg status --rev 1 --rev 10 -m 
+2

Terrible mal. Los archivos modificados en rango son 'hg log -r BEGIN: END --template" {files} \ n "' como @ geoffrey-zheng y @ton escribieron ** hace dos años !!! ** –

+0

Disculpa. Supuse que su respuesta era para el único conjunto de cambios. –

+0

Aunque, aunque quizás no sea el mejor, funciona;) –

1

Encontrado esta pregunta a través de Google para un similares concepto. Para mostrar todos los archivos que han cambiado 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 añadido en cada conjunto de cambios, desde [Inicio rev] para [end rev], con los archivos de cada conjunto de cambios en una nueva línea. Intercambie {file_mods}{file_adds} con {files} para mostrar todos los archivos modificados, agregados o eliminados.
  2. sed -e 's/ /\n/g' se repartirán todos los archivos para mostrar en líneas separadas y
  3. sort será, er, ordenar la lista para usted por lo que puede filtrar la lista con uniq
  4. uniq filtrará la lista para eliminar duplicados-archivos que cambiado en más de una revisión
+0

Esta solución pega la última modificación con el primer archivo agregado. Además, no trata adecuadamente los espacios en los nombres de archivo. Una solución basada en '--template' sin estas deficiencias podría construirse utilizando' join() 'como lo sugiere @Foxichu. –

-1

Si es como la mayoría de las tiendas, utiliza un sistema de venta de entradas para rastrear los cambios. Si conoce el número de ticket y desea encontrar todas las confirmaciones asociadas con ese boleto (suponiendo que incluya el número de entradas en el mensaje de confirmación), puede utilizar:

hg log -k TICKET_NUMBER 

Esto visualizar las todas las revisiones asociadas con La entrada. 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, sin embargo, la combinación de la información de las respuestas anteriores, se podría hacer lo siguiente para buscar confirmaciones, incluidos los archivos modificados:

hg log -vk TICKET_NUMBER 
+0

Generalmente, es una buena idea, pero no está relacionada con la pregunta. –

+0

Esto está relacionado con la pregunta. El cartel preguntó cómo obtener archivos en un conjunto de cambios. Los conjuntos de cambios a menudo están relacionados con los boletos. Mi solución muestra cómo obtener archivos relacionados con los conjuntos de cambios asociados a un ticket. – iDimensionz

0

Sé que esta pregunta es una cuestión de edad y yo' Estoy sorprendido de 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 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 envié al repositorio).

+0

"nadie acaba de ofrecer OP de código modificado" - @Geoffrey Zheng hizo exactamente eso ~ 1 hora después de la publicación de la pregunta –

Cuestiones relacionadas