version control - usados - Mercurial diff no funciona después de mover/cambiar el nombre
software para control de versiones de documentos (2)
Creo que es porque b/a
no existe en la revisión 1 o la revisión 0. Si ejecuta el comando hg diff -r 0 -r 4
desde dentro de la carpeta b
, debe producir el resultado esperado.
Si ejecuta hg diff -r 0 -r 1 a
desde la raíz de la copia de trabajo, también debe mostrar el resultado esperado.
Después de mover un archivo a otro directorio, ya no puedo mostrar las diferencias entre dos revisiones. P.ej:
hg init
touch a
hg add a
hg ci -m "Added a"
echo "Bli" >> a
hg ci -m "Bli"
echo "Bla" >> a
hg ci -m "Bla"
echo "Blub" >> a
hg ci -m "Blub"
hg diff -r 0 -r 1 a
Resultados en:
diff -r 8603b08f5a64 -r 16675581549e a
--- a/a Mon Apr 23 09:03:25 2012 +0000
+++ b/a Mon Apr 23 09:03:25 2012 +0000
@@ -0,0 +1,1 @@
+Bli
que es lo que esperaba Sin embargo, cuando muevo el archivo "a" a un directorio "b":
mkdir b
hg mv a b/a
hg ci -m "Moved a into b"
cd b
hg diff -r 0 -r 1 a
esto resulta en nada (sin salida en absoluto). También traté de usar el git Giff algo:
hg diff --git -r 0 -r 1 a
De nuevo, no hay salida en absoluto. El registro parece estar bien:
hg log --follow a
Resultados en:
changeset: 4:cb8185829bfd
tag: tip
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:08:12 2012 +0000
summary: Moved a into b
changeset: 3:4d1ba89885c3
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:26 2012 +0000
summary: Blub
changeset: 2:e9126dbb50b2
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:26 2012 +0000
summary: Bla
changeset: 1:16675581549e
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:25 2012 +0000
summary: Bli
changeset: 0:8603b08f5a64
user: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
date: Mon Apr 23 09:03:25 2012 +0000
summary: Added a
¿Alguien tiene alguna idea de por qué la diferencia no funciona después de mover un archivo? Tu ayuda es muy apreciada.
Esto es difícil o imposible con Mercurial de hoy. Creo que lo más cercano que puedes conseguir es
hg log --follow --patch -r 1 a
donde Mercurial rastreará las copias hacia atrás ( --follow
) antes de mostrar el diff ( --patch
).
En general, Mercurial no rastrea las identidades de los archivos , solo rastrea los nombres de los archivos . Cuando busque información por número de revisión, Mercurial buscará primero la revisión y luego buscará cualquier nombre de archivo en esa revisión. Entonces hg cat -r 0 a
le dará el mismo resultado que
hg update -r 0
cat a
es decir, el resultado es independiente del padre del directorio de trabajo actual.