使用git克隆hg存储库时,或从hg迁移到git时,哈希值是否保持不变?
答案 0 :(得分:3)
通过检查,答案似乎是“否”。
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 computes it as:
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}
中创建映射