¿Cómo utilizo Mercurial para fusionarme en los cambios realizados fuera del repository?

Me uní a un equipo con código greenfield. Cuando me uní, no tenían un depósito común, y me enviaron un tarball de su último. (Sí, lo sé …) He estado trabajando en ese tarball, haciendo cambios y agregando files. Ahora el equipo tiene un repository de Mercurial (¡hurra!), Y ha sido poblado con el mismo código que contiene cambios más recientes de otras personas. En otras palabras, tengo el código tarballed original en el directory, mis cambios en otro directory y un clon hg en un tercer directory, donde el código tarballed original es el antecesor común.

¿Cuál es una buena forma de fusionar mis cambios en el repository de Mercurial? Mercurial no tiene antecedentes del ancestro común. Soy nuevo en Mercurial. Mi experiencia de VCS es con CVS, Perforce y algunos SVN. ¿Puedo crear dos clones de hg locales más y reescribir uno con el código original, el otro con mi código modificado y usar Mercurial para fusionarlos de alguna manera? (y si es así, ¿cómo?) ¿O debería considerar usar una herramienta de fusión independiente y luego copyr la versión combinada en el directory de mi clon? ¿O algo mas?

Esto es todo en RHE Linux.

Gracias.

Una opción para probar es algo como esto:

diff -urN your-original-tarball your-current-code > mychanges.patch hg clone their-current-repo your-local-clone cd your-local-clone hg update -r 0 # go to their oldest item in history hg import --no-commit ../mychanges.patch # check it out, test, fix any rejected changes, etc. hg commit -m 'my changes' # <-- you'll be warned this creates new heads hg merge # merge your changes with their changes since they started using mercurial hg commit -m 'merged my solo work with yours' 

Eso está llevando todo tu trabajo hasta la date, importándolo como un nuevo set de cambios basado en la revisión más antigua que tienen, y luego fusionando ese trabajo con su trabajo en mercurial desde que comenzaron a usarlo.

Idealmente, su r0 sería el tarball que le dieron, pero una esperanza es que no es demasiado diferente.