目前这是一个纯理论问题(与此相关),但让我先介绍一下背景。每当您运行hg gexport
初始哈希值时,都会因调用而异。git init
这与运行或时类似hg init
。然而,由于 Mercurial 和 Git 提交相互对应并建立在先前的哈希之上,因此应该有一些方法可以从最小的通用初始状态(或 Git 端的最小状态)重新开始。
假设我过去使用过 hg-git,现在我尝试在 Mercurial 和 Git 状态之间再次同步,但没有(或很少).git
来自hg gexport
. 不过,我所拥有的是两个元数据文件:git-mapfile
和git-tags
.
有一个旧的 Git 镜像,它有点“落后”,而 Mercurial 存储库是最新的。
然后我像这样()为 hg-git 配置 Mercurial 存储库.hg/hgrc
:
[git]
intree = True
[extensions]
hgext.bookmarks=
topic=
hggit=
[paths]
default = ssh://username@hgserver.tld//project/repo
gitmirror = git+ssh://username@server.tld/project/repo.git
如果我现在天真地做,hg pull gitmirror
我将获得的只是一个不相关分支上的每个现有提交的重复,具有不相关的提交历史(以及与拉取之前相比的两倍数量的头)。
显然,将这两个元数据文件(git-mapfile
和git-tags
)放入.hg
. 最大的区别是,没有这些文件的拉取会成功(但会复制所有内容),而使用它们的拉取将在第一次修订时出错,因为“中止:未知修订版......”(甚至是有道理的)。
问题:hg gexport
为了重新开始与 hg-git 同步,我必须保留Git 端数据/元数据的哪些部分和多少(即最低限度!) ?(我无法在文档中找到这一点。)