Будут ли коммиты в git и mercurial репозиториях с одинаковой историей иметь одинаковый хеш? - PullRequest
2 голосов
/ 02 апреля 2019

При использовании git для клонирования репозитория hg или при переходе с hg на git хэши останутся такими же?

1 Ответ

3 голосов
/ 02 апреля 2019

При проверке ответом будет «нет».

hg clone ssh://some.server.com/path/hgproject/

git clone hg::ssh://some.server.com/path/hgproject/

Далее:

hg log -l 5

git log -n 5

Показывать разные хеши коммитов для одних и тех же коммитов.

Хотя и git, и hg используют хэши SHA-1, должно быть различие в том, что они хэшируют, возможно, метаданные.

Любые инструментыв зависимости от хэшей потребуется миграция истории для миграции.

Подробнее в контексте

За комментарий @ngoldbaum & https://www.mercurial -scm.org / wiki / Nodeid :

nodeid = sha1( min(parent1, parent2) + max(parent1, parent2) + contents )

Принимая во внимание, что git вычисляет его как :

sha1(
    meta data
        commit message
        committer
        commit date
        author
        authoring date
    hash-of-tree-object (effectively the working directory)
)

Отображение

при использовании git-remote-hg для просмотра или преобразованияВы можете найти достаточно информации для создания сопоставления в .git/hg/origin/marks-{hg,git}

...