2010-03-09 25 views
5
archivo

parche está hecho con TortoiseSVN-> Crear Parche ...problemas al aplicar un parche a un repositorio SVN mercurial

El intento de importar parche en el depósito de mercurio utilizando hg import patchfile.

Parece que hay problemas con la forma Hg busca los archivos que se hace referencia en el archivo de revisión:

unable to find 'gui/gui/RemoteFramework.cpp' for patching 
2 out of 2 hunks FAILED -- saving rejects to file gui/gui/RemoteFramwork.cpp.rej 

Ésta parece ser una cuestión de donde se hizo el parche en términos de directorios y donde se debe aplicar . He intentado jugar con la opción --base para la importación de hg, pero aún no he llegado a ninguna parte.

¿Alguien tiene algún consejo?

Respuesta

10

Sospecho que necesita hacer hg import --strip 0 patchfile ya que Subversion no incluye ningún prefijo en la ruta del archivo. --base especifica dónde debe buscar los archivos, y --strip indica cuántos (por defecto 1) elementos de ruta ignorar al comienzo de los encabezados de los archivos de diferencias.

+0

Si utiliza el sinónimo "parche" para importar, y la forma corta de --strip, que se parece mucho a usar el parche viejo y simple: hg parche -p0 fichero de parche – krupan

+0

Gracias! Esto me ayudó también. Por cierto, esto mismo funciona para parches CVS como un encanto! –

+0

Vine aquí por tercera vez (: ¡Thx! –

0

Tuve el mismo problema al mover mi proyecto, CartoType, de Subversion a Mercurial. Hice que se revisaran las cosas de Subversion en C: \ CartoType, y un clon del repositorio de Mercurial en C: \ CartoType-mercurial.

Utilicé TortoiseSVN para crear archivos unificados de diferencias, y encontré que estaba usando rutas como C: /CartoType/src/main/router/cartotype_router.h en ellas. Correr parche hg en C: \ CartoType-mercurial, he encontrado lo que hay que hacer era despojar a dos elementos de la ruta, así:

hg patch -p2 c:\temp\patch1982.diff 

La otra cosa importante que tenía que hacer era sustituir el 'Índice' líneas en el archivo diff con comentarios de check-in, porque de ahí es de donde obtiene el parche hg. Así que en este ejemplo he tenido que cambiar la primera línea de mi archivo diff de

Index: C:/CartoType/src/main/router/cartotype_router.h 

a

Added an optional parameter to NewRoadOrWalkingRouter... (etc.) 

Si hay varias líneas de índice en el archivo diff, cambiarlos todos a la misma check- en comentario.

Cuestiones relacionadas