Tengo un repositorio Mercurial con cuatro ramas en él. Una es la rama "común", las otras tres son ramas "específicas" que consisten en algunos cambios cosméticos aplicados a la rama común. Uno de esos cambios cosméticos consistió en cambiar el nombre de algunos archivos.Mercurial: ¿cómo fusionar los cambios en un archivo que se renombró en la otra rama?
Así que la rama común tiene "archivo.txt", y la primera rama específica tiene "archivo-01.txt" que es el mismo archivo, usado para el mismo propósito pero tiene un nombre diferente y contenido ligeramente diferente . Se renombró a file-01.txt en la rama específica, y "hg log -f file-01.txt" muestra correctamente el historial que se remonta a antes del cambio de nombre.
Cuando realizo un cambio en file.txt en la rama común, necesito poder combinar ese cambio en file-01.txt en la rama específica. Pero Mercurial no entiende que los archivos son iguales.
cambiada a distancia archivo.txt, que elimina locales
uso (c) colgado versión o dejar (d) eleted: Me dice?
Si elijo "c" entonces obtengo un nuevo archivo.txt que contiene exactamente lo que está en la versión de la rama común. Si selecciono "d", el cambio no se fusionará en absoluto.
¿Qué puedo hacer para hacerlo bien?
EDIT: Puedo hacer que funcione correctamente en un repositorio de prueba nuevo, pero no en mi repositorio real. Esto es lo que me pasa (nota que rev 118 es en la rama específica, justo antes del cambio de nombre original, por lo que estoy pasando por el proceso de cambio de nombre de nuevo para ilustrar):
C: update \ ...> hg -C 118
0 archivos actualizados, 0 archivos fusionados, 0 archivos eliminados, 0 archivos sin resolver
C: \ ...> hg funden por defecto
fusionan anotherfile.txt archivo.txt
fusión
0 actualización de archivos d, 2 archivos fusionados, 0 archivos eliminado, 0 archivos sin resolver
(fusión rama, no se olvide de cometer)
por lo que funciona sin el cambio de nombre. Pero si puedo cambiar el nombre, falla:
C: \ ...> hg update -C 118
2 archivos actualizados, 0 archivos fusionados, 0 archivos eliminados, 0 archivos resueltos
C : \ ...> hg cambiar el nombre de archivo archivo.txt-01.txt
C: \ ...> hg commit -m "a llamarse"creados nuevo jefe
C: \ ...> hg merge default
archivo de cambio remoto.txt que local borró
uso (c) colgado versión o dejar (d) elegido?
EDIT 2: Esto es lo que me dan en el último paso de hg merge --debug default
:
la búsqueda de copias de nuevo a 115 rev
archivos sin igual en locales:
archivo-01.txt
todas las copias encontradas (* = para combinar,! = Divergente):
file-01.txt -> file.txtcomprobación de directorio cambia el nombre
manifiestos resolver
sobrescritura Ninguno parcial False
antepasado 9d979018c2df f842fdbc252b + local 05fc75e480da remoto
anotherfile.txt: versiones difieren -> m
archivo.txt cambiado a distancia que locales suprime
uso (c) colgaron la versión o se fueron (d) elegidos?
Esto es extraño ya que Mercurial normalmente sabe cómo combinar los cambios en el archivo renombrado. Aquí hay un ejemplo trabajado que puede intentar verificar: http://mercurial.aragost.com/kick-start/tasks.html#merging-default-into-a-branch No sé qué pasó en su caso , aunque. –