2012-06-19 11 views
6

Recientemente moví algunos archivos en mi repositorio mercurial a un subdirectorio (como módulo) para mantener todo ordenado. Algunos días más tarde descubrí que necesitaba ese módulo en otro proyecto, así que estoy tratando de convertirlo a su propio repositorio mercurial.Convertir el repositorio mercurial en subrepositorios con historial completo (como hg log -f)

El problema que estoy enfrentando es que el nuevo historial del repositorio no está completo, solo incluye el historial del archivo después del cambio de nombre. La historia que obtengo es la misma que ejecutar hg log filename, y lo que quiero es tener el historial completo del archivo, como el resultado de hg log -f filename.

¿Qué me estoy perdiendo?

Gracias.

+0

¿Hizo una operación para renombrar o eliminar y agregar? – Eiver

+0

Eliminar y agregar, pero se detectó como cambio de nombre por hg addremove. –

Respuesta

8

supongo que tenías algo como esto estructura:

main.c 
lib1.c 
lib2.c 

ha cambiado el nombre de los archivos y tiene algo como esto:

main.c 
lib/lib1.c 
lib/lib2.c 

ahora quiere algo así como lib repositorio:

lib1.c 
lib2.c 

Supongo que esta última parte porque, cuando la incluye como un sub -repositorio, se verá como el repositorio original después del cambio de nombre.

Haría esto en unas pocas etapas.

La primera etapa sería hacer lo que probablemente ya hizo. Convertir el repositorio con la línea de comandos hg convert --filemap LibTempMap.txt Main LibTemp y los siguientes contenidos de LibTempMap.txt:

exclude * 
include lib 
rename lib . 

Esto le da un repositorio con la historia después del cambio de nombre.

La segunda etapa sería convertir el repositorio antes de que el cambio de nombre con la línea de comandos hg convert --rev X --filemap LibMap.txt Main Lib (donde X es la revisión antes de que el cambio de nombre) y los siguientes contenidos de LibMap.txt:

exclude * 
include lib1.c 
include lib2.c 

Esto le da un repositorio con el historial anterior al cambio de nombre.

Entonces yo trasplantar los cambios posteriores de LibTemp a Lib usando hg transplant -s ..\LibTemp Y:tip desde el interior de la carpeta Lib (donde Y es la revisión después de que el cambio de nombre en el repositorio de LibTemp). Esto debería trasplantar limpiamente ya que se aseguró de que las estructuras de archivos fueran las mismas en el repositorio temporal al hacer el cambio de nombre durante la conversión.

Le quedan entonces el repositorio Lib que contiene el historial y los archivos que desea y puede eliminar el repositorio LibTemp.

Cuestiones relacionadas