Generando una lista de los archivos que cambiaron entre versiones de hg

118

Quiero generar una lista de los archivos que cambiaron entre dos revisiones en un directorio determinado en Mercurial.

En particular, no me interesa qué cambió, sino qué archivos cambiaron en ese directorio.

Por ejemplo, suponiendo que entre theny otherthen, solo cambiaron 2 archivos:

>hg hypothetical-command -r then:otherthen
foo.baz
bar.baz
>

¿Cuál es el comando hipotético? He intentado diff y log, pero no veo cómo convencerlos de que lo hagan: o obtengo el parche (diff) o obtengo el repositorio completo (log).

Paul Nathan
fuente

Respuestas:

166
hg status --rev x:y

donde xy yson los números de revisión deseados (o nombres de etiquetas o sucursales).

Si está utilizando el terminal en Windows, agregue hg status --rev x:y> your-file.txtpara guardar la lista en un archivo.

alemjerus
fuente
3
Para ver solo los cambios en el directorio actual:hg status --rev x:y .
Usuario
14
Para ver los cambios en la última revisión: hg status --rev .^
kunigami
8
Para obtener solo la lista de nombres de archivo (y ningún carácter de prefijo que indique el tipo de cambio), agregue -n, es decirhg status --rev x:y -n
Cheetah
1
hg status --change .enumera los archivos modificados en .- la misma lista que hg status --rev .^pero de manera más directa
Metaxis
14

el estado es lo que necesitas.

Pero, dependiendo de lo que quiera decir con "entre dos revisiones", también podría considerar usar el rango " x :: y " (Gráfico acíclico dirigido por DAG).

Dados conjuntos de cambios paralelos,

1--2---4 \---3

hg status --rev 1:4 devolvería (1,2,3,4), es decir, cualquier cosa entre los puntos finales e incluidos, de acuerdo con la rev numérica local . Esto podría (y probablemente lo hará) devolver resultados diferentes en otros repositorios, aunque relacionados.

hg status --rev 1::4devolvería (1,2,4), es decir, los puntos finales y todos los conjuntos de cambios que son descendientes de '1' Y antepasados de '4'.

El último caso, x :: y, suele ser más útil en aplicaciones del mundo real. Esto es lo que obtiene a través de TortoiseHg \ Visual Diff.


> hg help revsets:

"x :: y" Un rango DAG, es decir, todos los conjuntos de cambios que son descendientes de xy antepasados ​​de y, incluidos los mismos xey. Si se omite el primer extremo, esto equivale a "ancestros (y)", si se omite el segundo es equivalente a "descendientes (x)".

martind2112
fuente
1
Tal vez necesite incluir explícitamente el comando para que su respuesta no dependa de la otra y sea más infalible. Algo como "Sí, el estado es lo que necesita. Por ejemplo hg status --rev x::y".
PhoneixS