hg convert
根据我的经验,它并不是最容易使用的工具,但hg-git
对我来说总是完美无缺。由于您提到不久前 git 存储库存在一些问题,因此您应该尝试进行完整的完整性检查:
git fsck-objects --full
(我假设存储库是本地的,但如果不是,请制作本地克隆并在那里检查。)
这不是必需的,但您可以在继续之前强制进行垃圾收集:
git gc
如果你真的很偏执,你可以通过另一个完整性检查来跟进。使用hg git
(确保您已安装并启用它.hgrc
),很容易做一个本地 Mercurial 克隆:
hg clone path/to/git/repo path/to/hg/repo
(这可能需要一些时间——您正在逐一查看修订并重新保存它们。)
现在,hg 克隆实际上将在内部存储一个隐藏的 git 存储库副本——您可以通过git status
从克隆目录中运行来看到这一点。这个隐藏的副本不会在 pull 或 push 时转移,所以如果你真的想摆脱 git 遗产,你可以做另一个克隆:
hg clone path/to/hg/repo path/to/new/repo
如果在某个时候你决定要回到 git,你也可以使用隐藏的 git repo 来做到这一点hg-git
:
git init path/to/new/git/repo
cd path/to/new/git/repo
git pull path/to/hg/repo/.hg/git
如果您仍然没有混合存储库,您可以通过hg gexport
(part of hg-git
) 重新创建它,或者使用git-hg或hg/brz-bridge 之类的东西 git。另请参阅Git 与 Mercurial 存储库的互操作性。