Это довольно эзотерический вопрос, поэтому просто для того, чтобы четко прояснить это с самого начала: я не говорю о преобразовании из svn в git, git в mercurial или mercurial в git. Я говорю о сложной ситуации, возникшей из-за использования "кросс-системных" плагинов, которые позволяют Mercurial в некоторой степени взаимодействовать с git и SVN.
В течение некоторого времени я использовал модуль hg-subversion для Mercurial для отслеживания восходящего SVN-репозитория на code.google.com. Благодаря этому плагину Mercurial считает, что репозиторий "связан" и способен вносить только те изменения, которые произошли с тех пор, как я последний раз вытащил из репо. Это позволяет мне поддерживать собственный частный репозиторий Mercurial, который включает в себя личные изменения, ветки, теги и т.д., Но который периодически синхронизирует и объединяется с изменениями, произошедшими в репозитории SVN вверх.
Репозиторий вверх по потоку перемещался, чисто, из SVN в git. Когда я говорю чисто, я имею в виду, что они взяли с собой все дерево фиксации или, по крайней мере, часть, влияющую на ветку default/master, о которой я забочусь.
Теперь я в ситуации, когда у меня есть репозиторий Mercurial, который обновляется до последней проверки в ныне существующем репозитории SVN, и я хочу начать втягивать изменения из нового upstream git, начиная с изменения, произошедшего сразу после того, как репозиторий svn был перемещен в github.
Я могу использовать замечательный hg- git плагин, чтобы вытащить изменения из этого репозитория, но поскольку текущий репозиторий не имеет понятия о том, что он "связан" с репозиторией git вверх, он будет тянуть ВСЕ изменения, включая все изменения, в которых набор изменений зеркального изображения уже присутствует в моем репозитории.
Итак, я ищу совет, как я могу заставить свой Mercurial-репозиторий считать себя через hg- git, связанный с восходящим репозиторием git, а также рассмотреть все соответствующие коммиты из git как "уже вытащил" для сохранения палитры настроек.
Я вижу, что внутри hg- git появляется файл .hg/git -mapfile, который я предполагаю, что карты изменяются между восходящим git и локальным хранилищем Mercurial. Вероятно, это ключ.
Самый простой способ получить мой локальный репозиторий Mercurial в таком состоянии, в котором он по существу ведет себя так, как будто он запущен как клон восходящего репозитория git, но поддерживает все мои собственные несвязанные изменения, которые были добавлены с течением времени
(Примечание. Я бы предпочел не начинать с нового клона, а затем применять личные изменения, потому что я хочу сохранить историческую целостность этого репозитория для своих собственных целей построения/отладки).