2011-07-27 8 views
12

Estoy tratando de extraer una carpeta (llámese Proyecto1) de un mercurial Repo existente (llamada en MainRepo) utilizando la extensión Convert Mercurial a la conversión Mercurial . He seguido los métodos descritos por los desarrolladores de Mercurial (y en otros lugares en la web) en Windows XP:Crear una nueva operación de sub carpeta en Mercurial Repo usando convertir

C:\MainRepo>echo include Project1 > ~myfilemap 
C:\MainRepo>echo rename Project1 . >> ~myfilemap 
C:\MainRepo>hg convert --filemap ~myfilemap . C:\Project1Repo 
C:\MainRepo>cd \Project1Repo 
C:\Project1Repo>hg update 

Esto crea la nueva operación (Project1Repo) con las carpetas/archivos Mercurial en su lugar. Pero no:

1) Lleve a cabo el Historial relacionado con los cambios realizados para el Proyecto en la carpeta Proyecto1. (Solo está presente la primera entrada de historial para MainRepo y un elemento Convertir).

2) Copie en todos los archivos de código fuente desde MainRepo \ Project1 a Project1Repo.

he visto las otras preguntas y respuestas similares en stackoverflow, pero estos no parecen ayudar (He seguido los métodos discutidos en ellos): Can I clone part of a Mercurial repository?

Entonces la pregunta es: ¿Cómo se extrae una sub carpeta de MainRepo con solo el historial de subcarpetas intacto y completo para un nuevo Repo y transferir los archivos de origen al mismo tiempo? (Aunque creo que una copia directa hará la última). Se trata de mantener la historia que es importante. En este caso, puedo hacer esto después de una fecha o número de conjunto de cambios.

Cualquier ayuda muy apreciada como soy relativamente nuevo en este

Gracias

Respuesta

7

El flujo de trabajo que indicó es correcta. Esa es la forma en que la extensión convert está diseñada para funcionar.

Su pregunta indica que la salida de las operaciones dobles hg convert está realmente vacía (excepto para "la primera entrada del historial de MainRepo y un elemento Convertir"). Esto indicaría que convert no pudo encontrar la ruta especificada en su mapa de archivos.

¿Está seguro de que la ruta dada a su declaración include es correcta?

El nombre del directorio dado en su declaración include debe ser la ruta completa de su raíz del repositorio. Por ejemplo, su instrucción de inclusión:

include Project1 

requiere que el camino hacia Proyecto1 ser en realidad:

C:\MainRepo\Project1 

Si Project1 en realidad se encuentra en otro lugar en MainRepo, el resultado final será con una cesión temporal vacía después de la conversión.

+0

Hola Tim - Gracias por su respuesta sobre esto. Sí, fue un problema de ruta. Después de leer unas cuantas publicaciones más sobre el tema y observar claramente lo que necesitaba hacer, funcionó bien. Aunque después de la ** actualización de hg ** no se habían copiado los archivos de origen (lo hice manualmente). Un comando poderoso pero no bien documentado, siento. –

Cuestiones relacionadas