РЕШЕНО!
Первоначально я не заметил, что мой предполагаемый общий предок не был точно таким же.Во время преобразования репозитория Foo в svn-> hg строки $ ID $ были расширены, но не были созданы в репо Бар.Шаг 1, приведенный ниже, был простым исправлением для создания РЕАЛЬНОГО общего предка.
Следующие шаги позволили мне достичь моей цели:
1- Убедитесь, что предполагаемый общий предок(D и D ') фактически идентичны.Если нет, создайте новую точку сращивания для них (S) в репо Бар.S должен точно соответствовать содержанию D 'в моем примере.
...A-B-C-D--J-K---L
\ \ /
S M-N
2- Обрезать историю репо Foo, чтобы удалить дублирующую историю, включая D', с помощью
hg convert --splicemap TrimSplicemap Foo FooTrimmed
Содержимое TrimSplicemap: (где E - полный хэш E)
E 0000000000000000000000000000000000000000
3- Используйте полосу hg, чтобы удалить отключенную избыточную историю
cd FooTrimmed
hg strip C'
4- Снова используйте hg convert для скрепления раздетого репо Фу с репо Баром при коммите 'S'
cd ../Bar
hg convert --splicemap FooBarSplicemap ../FooTrimmed .
FooBarSplicemap content: (где E '- новый хешдля E в FooTrimmed, а S - хеш S)
E' S
Это должно сделать это!: D