我正在开发一个git存储库,现在我需要将其转换为hg存储库。我原来的git存储库有41个提交,大小为320MB。
我正在尝试使用hg convert git-repo hg-repo
转换存储库。此命令开始将git repo转换为hg,但在版本号18的中途挂起(不停止)。我检查此时hg repo的大小是50Mb。我知道转号没有。 18和size = 15M并不重要,但是hg convert没有打印出我可以调试的任何错误。
hg是否在某个未知位置打印错误?存储库的大小是否会对“hg convert”程序产生影响?
答案 0 :(得分:1)
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 clone实际上有一个内部存储的git repo的隐藏副本 - 你可以通过在克隆目录中运行git status
来看到这一点。这个隐藏的副本不会在pull或push上传输,所以如果你真的想要摆脱git遗产,你可以做另一个克隆:
hg clone path/to/hg/repo path/to/new/repo
如果在某些时候你决定要回到git,你也可以使用hg-git
中隐藏的git repo来做到这一点:
git init path/to/new/git/repo
cd path/to/new/git/repo
git pull path/to/hg/repo/.hg/git
如果您仍然没有闲置的混合仓库,您可以通过hg gexport
(hg-git
的一部分)或使用git-hg或{{ 3}}。另见hg/brz-bridge for git。