He estado leyendo acerca de los subrepositorios y cómo extraer una carpeta existente de un repositorio de Mercurial a un subrepositorio utilizando la extensión de conversión y un mapa de archivos. Puedo hacer esto con éxito Si tengo la siguiente estructura de carpetas:¿Cómo convertir un repositorio Mercurial existente para usar subrepositorios y mantener el historial intacto?
C:\Project
---Project\root.txt
---Project\SubFolder
---Project\SubFolder\fileinsubfolder.txt
Puedo hacer un subrepositorio de SubFolder. De la misma manera, puedo extraer todo lo demás un repositorio separado (en este ejemplo, el segundo repositorio solo tendría el archivo root.txt). Luego puedo agregar el repositorio SubFolder como un subrepositorio al segundo repositorio. Pero aunque ambos repositorios tienen el historial completo, estos historiales no están vinculados => la actualización del repositorio raíz a un estado anterior no colocará el subrepositorio en el estado que debería tener en ese punto. La actualización a una revisión anterior coherente (tanto el root como el subrepo se actualizan automáticamente) solo funcionará cuando se actualice a una revisión que ya sepa sobre el subrepositorio y tenga el archivo .hgsubstate.
Y la alternativa que pensé fue simplemente olvidar los archivos en SubFolder en el repositorio actual e ingresar un nuevo repositorio en SubFolder y al mismo tiempo agregar un archivo .hgsub. Lo que espero lograr aquí es trabajar a partir de este punto con un subrepositorio, pero todavía tengo una forma de actualizar a una revisión anterior (antes de separar el subrepo) porque los archivos de SubFolder aún están en el historial del repositorio actual.
Esto no funciona: cuando he olvidado los archivos en mercurial, he ingresado un nuevo repositorio y lo he vinculado como un subrepo en el repositorio actual y actualizo a una revisión anterior antes de que existiera el subrepo, aparece este error:
C:\Project>hg update 1
abort: path 'SubFolder\fileinsubfolder.txt' is inside repo 'SubFolder'
el problema aquí es que al actualizar a una versión anterior que no estaba al tanto de la subrepo, esta actualización quiere poner archivos en la subcarpeta. Pero este SubFolder sigue siendo otro repositorio (tiene un directorio .hg) y aunque el repositorio principal no tiene ningún recuerdo al respecto, la actualización no quiere poner archivos en el SubFolder ya que es un repositorio.
¿Hay alguna forma de evitar este error o hay un mejor método para pasar a usar un subrepo para una cierta carpeta en un repositorio de Mercurial existente y mantener el historial intacto (y ambos historiales vinculados)?
Entonces, ¿cómo manejaste esto, sin la solución discutida con @Martin? ¿Funcionaría la solución "olvidar" si el subrepo estuviera ubicado en una ruta diferente (que los archivos originales)? En mi caso, estaba planeando mover los archivos de todos modos ... Volveré a publicar cómo funciona. – harpo