将git回购转换为mercurial回购



我正在开发一个git存储库,现在出于某种原因,我需要将其转换为hg存储库。我最初的git存储库有41次提交,大小为320MB。

我正在尝试使用hg convert git-repo hg-repo转换存储库。此命令开始将git-reo转换为hg,但在版本号18的中途挂起(不停止)。我检查了一下,此时hg回购的规模是50Mb。我知道版本号18和大小=15M没有那么重要,但hg-convert没有打印任何我可以调试的错误。

hg是否在某个未知位置打印错误?存储库的大小对"hg-convert"程序有影响吗?

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 repo的隐藏副本——您可以通过在克隆的目录中运行git status来看到这一点。这个隐藏的副本不会在拉或推时传输,所以如果你真的想摆脱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 gexporthg-git的一部分)在适当的位置重新创建它,或者使用git-hg或hg/brz桥之类的东西来实现git。另请参阅Git与Mercurial Repository的互操作性。

相关内容

  • 没有找到相关文章

最新更新