2012-03-26 13 views
13

¿Cómo obtengo una lista de archivos modificados entre dos conjuntos de cambios arbitrarios?Mercurial: enumere archivos "hg diff"

único que me pregunto es algo horrible como esto:

# files where something has been added 
hg diff -r AA -r BB|grep -- +++|cut -f1|cut -d/ -f2- >/tmp/ka 

# files where something has been removed 
hg diff -r AA -r BB|grep -- ---|cut -f1|cut -d/ -f2- >>/tmp/ka 

# filtering out "dev/null": it appears when a file is added or removed from the repository 
sort -u /tmp/ka |grep -v dev/null 

Tal vez hay un comando de mercurio no me di cuenta?


NOT los archivos modificados de un solo conjunto de cambios.
edición: Necesito hacer esto porque estoy trabajando con algunos programadores de la Edad del Bronce que no entienden lo que es un .diff es, por favor tengan paciencia conmigo ...

+0

Por favor, escribe en italiano. Porque "modificado a partir de dos conjuntos de cambios arbitrarios" es un ruido impredecible y una interpretación errónea. Entre dos, o solo estos dos? –

+1

Bastante seguro de que está tratando de examinar lo que sucedió en un repositorio conjunto de cambios por cambios, similar a examinar el historial de diferencias para un solo archivo cambio por cambio. –

+0

Los archivos modificados entre el conjunto de cambios AA y el conjunto de cambios BB. Algo así como "hg diff -r AA -r BB", pero solo nombres de archivo, en lugar de un diff completo, es decir, lo que sugerí con esa línea de comandos. –

Respuesta

30

hg diff -r 182 -r 193 --stat

o

hg status --rev 182:193

+0

¡oh, gracias, eso es todo! –

+0

'--rev' y' -r' se comportan igual en mi sistema ... ¿fue eso un error en 2012? – mpen

+0

Parece que ya está arreglado, sí. –

0

solución todo en uno. "|"

>hg diff -r 3 -r 4 --stat 
comments.php | 14 +++----------- 
functions.php | 15 +++++++++++++-- 
header.php | 2 +- 
readme.txt | 17 ++++++++++++++--- 
sidebar.php | 43 ++++--------------------------------------- 
style.css  | 18 ++++++++++++------ 
6 files changed, 47 insertions(+), 62 deletions(-) 

puede obtener archivos modificados por el grepping basados ​​en diff char, o (enfoque mejor y más agradable de mi POV) de salida de tubería para curiosear, que, por registro con exactamente 4 campos, print $ 1

Solución dos. Entrar + plantillas + revsets

>hg log -r "3::4" --template "{file_mods}\n" 
footer.php functions.php header.php search.php style.css 
comments.php functions.php header.php readme.txt sidebar.php style.css 

convertido a la lista, eliminar duplicados (posibles) Voy a dejar para que

8

El comando básico para buscar cuando se quiere saber algo sobre el estado del archivo es hg status. El comando de estado es el nombre de archivo orientado y desea conocer algunos nombres de archivo.

Cuando se ejecuta como

$ hg status 

después compara el estado de copia de trabajo con la revisión de los padres copia de trabajo (.). Pero si se lo ejecutó como

$ hg status --rev AA:BB 

continuación, se mostrará los archivos modificados entre AA y BB! No es necesario desmenuzar, cortar, clasificar ni crear plantillas.

(he explicado esto antes here, here y here, consulte las preguntas y respuestas para obtener más consejos.)

+0

No funciona con -r porque "-r --removed muestra solo los archivos eliminados" - es una falla de interfaz de usuario difícil. –

+0

@asaddude: ups! Lo siento, lo arreglé para usar '--rev' en su lugar. –

Cuestiones relacionadas