Reparenting in Mercurial: ¿cómo se vuelven a unir dos clones svn independientes?

Aquí está la situación: el desarrollador Foo creó un repositorio hg a partir de nuestro repositorio svn. El repositorio hg de Foo era solo un clon superficial del tronco en svn (sin ramas, etiquetas, etc., y el historial era incompleto [alrededor de 100 conjuntos de cambios]). Developer Bar hizo lo mismo, pero clonó todo el repositorio de svn, incluido el historial completo, ramas, etiquetas, etc. Tanto Foo como Bar han realizado un desarrollo ramificado en sus repositorios.

Hay un ancestro SVN común para ambos repositorios, pero cada repositorio hg tiene un número de versión diferente. Me gustaría reparar los cambios de Foo del antepasado común al repositorio de Bar. Aquí hay un diagrama de lo que estoy buscando:

epo de Foo:

C'-D'-E-F---G
       \   /
        H-I

Repo del bar:

...A-B-C-D-J-K---L
            \   /
             M-N

C, C 'y D, D' tienen el mismo contenido, pero diferentes números de versión y comentarios.

La meta

...A-B-C-D--E-F---G
          \  \   /
           \  H-I
            \
             J-K---L
              \   /
               M-N

Me he quedado sin ideas sobre cómo hacer que esto suceda. Intenté convertir --splicemap splice.map [el archivo splice.map contenía E D] (no hizo nada). Clone -f logró poner todo en un repositorio, pero parecen ser árboles independientes. Después del clon -f, probé rebase --source E --dest D --detach, pero simplemente falló:

Ideas?

Soy consciente de que alterar el historial invalidará el clon de cualquiera de los repositorios, esto no es un problema en este caso. Todos los usuarios se volverán a clonar a partir del resultado de este esfuerzo.

Respuestas a la pregunta(3)

Su respuesta a la pregunta