Mercurial -> Миграция Git с сохранением хэшей коммитов - PullRequest
2 голосов
/ 28 октября 2019

Существует ли какой-либо инструмент, способный экспортировать ртутный репозиторий в репозиторий git при сохранении хэшей коммитов?

Мне известны hg-git или fast-export.git, но они создаютновые коммиты с новыми хэшами (и, кажется, нет никакой возможности настроить это). У нас есть сотни ртутных репозиториев, размещенных на Bitbucket с большим количеством хуков, ссылок для скачивания и т. Д. В зависимости от точных хэшей. Возможность сохранения хешей сэкономит нам значительное количество усилий, необходимых для обновления всех внешних ресурсов.

1 Ответ

5 голосов
/ 28 октября 2019

Это невозможно.

Идентификатор хэша объекта Git представляет собой криптографическую контрольную сумму данных базового объекта. В случае объекта коммита это криптографическая контрольная сумма строки commit, пробел, размер в байтах остальных данных, выраженных в десятичном виде, NSC ASCII, а затем заголовки, текст сообщения журнала иtrailers.

Идентификатор хэша коммитов Mercurial представляет собой криптографическую контрольную сумму соответствующей части данных Mercurial для этого коммита (структуры данных Mercurial отличаются, поэтому некоторые данные коммитов не участвуют в контрольной сумме).

Единственный известный сегодня способ создания определенного хеш-идентификатора из некоторых известных данных - как это было бы в коммите Git - это добавить область данных «мусор», а затем тратить много вычислительных хешей лет с различным содержимымв хлам-данных. Команда, которая создала shattered , использовала 110 вычислительных лет для того, чтобы найти один дубликат хеш-идентификатора.

...