El file de parche está hecho con TortoiseSVN-> Create Patch …
Intentando importar el parche en el repository de mercurial usando hg import patchfile
.
Parece que hay problemas con la forma en que hg busca los files a los que se hace reference en el file de parche:
unable to find 'gui/gui/RemoteFramework.cpp' for patching 2 out of 2 hunks FAILED -- saving rejects to file gui/gui/RemoteFramwork.cpp.rej
Esto parece ser una cuestión de dónde se hizo el parche en términos de directorys y dónde se debe aplicar. He intentado jugar con la opción –base para la import de hg, pero aún no he llegado a ninguna parte.
Alguien tiene algun consejo?
Sospecho que debes hg import --strip 0 patchfile
ya que Subversion no incluye ningún prefijo en la ruta del file. --base
especifica dónde debe search los files y --strip
dice cuántos (por defecto 1) elementos de ruta ignorar al comienzo de los encabezados de diff.
He tenido 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 repository de Mercurial en C: \ CartoType-mercurial.
Usé TortoiseSVN para crear files unificados de diferencias y descubrí que estaba usando routes como C: /CartoType/src/main/router/cartotype_router.h en ellas. Al ejecutar el parche hg en C: \ CartoType-mercurial, encontré que lo correcto era quitar dos elementos de la ruta, por lo tanto:
hg patch -p2 c:\temp\patch1982.diff
La otra cosa importante que tenía que hacer era replace las líneas 'Index' en el file diff con los comentarios de check-in, porque de ahí es de donde hg patch los saca. Entonces en este ejemplo tuve que cambiar la primera línea de mi file 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 file diff, cámbielas todas al mismo comentario de check-in.