consideran este repo trivial:En mercurial, ¿cómo ver diff en un conjunto de cambios de combinación y un padre sin cambios del otro padre?
mkdir temp
cd temp
hg init
echo abc > file1
hg ci -A -m init
echo def >> file1
echo hey > file2
hg ci -A -m A
hg up -r0
echo ghi >> file1
echo hey > file3
hg ci -A -m B
hg merge
hg ci -m merge
durante combinación, tome "ghi" (en realidad no importa de qué lado).
El DAG es:
0 - 2 - 3
\- 1 -/
hg diff -r1:3
espectáculos ARCHIVO1 cambian y nueva archivo3.
hg diff -r2:3
muestra un nuevo archivo2. Lo mismo para hg log -p -r3
y hg st --change 3
, porque 2 es el primer elemento principal.
Mi pregunta es: ¿cómo puedo ver los cambios entre 1 y 3 menos los cambios en 2, que es conceptualmente d(1:3) - d(0:2)
?
Espero ver solo el cambio de archivo1. hg log -r3 -v
solo muestra "archivos: archivo1" (supongo que porque es el único archivo en el cambio ctx), pero curiosamente, hg log -r3 --debug
también muestra "archivos +: archivo2".
Si ejecuto hg view
(proporcionado por la extensión incluida hgk
) y hago clic en r3, se muestra solo el archivo1. No puedo leer el código tcl/tk, pero parece que el truco está en una función contmergediff
donde obtiene la lista de archivos en una combinación, en la que de alguna manera omite el archivo2.
FWIW, TortoiseHg es diferente de todo lo anterior: al hacer clic en r3 se muestra "M file1" y "A file2" en la lista de archivos, pero no muestra ningún cambio real en file1. Haga clic en "Otro padre" muestra "M archivo1" y "Un archivo3", que es lo mismo que "diff -r1: 3".
Un caso de uso del mundo real es este: r1 es mío, y r2 es de un colega. Anteriormente, el colega revisó r1 (diff 0: 1), pero no lo fusionó antes de solicitar la revisión de r2. Así que revisé r2 (diff 0: 2), y luego él hizo la fusión. Luego, cuando vea diff 1: 3, debo olvidar que alguna vez revisé r2. Si la diferencia de fusión es pequeña, puedo usar hgk. Pero si es grande, realmente necesito verlo en vdiff.
(ACTUALIZADO) Ahora hay un mergediff extension. Si alguien lo intenta y lo encuentra funcionar, por favor agregue una respuesta.
Para comprender mejor su caso de uso, ¿desea ver qué ha hecho su colega con * sus * cambios (rev.1) durante la fusión? –
@Oben Sonne: exactamente, y simétricamente, lo que tuvo que cambiar sus cosas para la fusión. Como sé lo que es 0: 1 y lo que es 0: 2, solo quiero ver el cambio real entre 1: 3 y 2: 3, pero hg diff 1: 3 incluye 0: 2 y 2: 3 incluye 0: 1. –