有没有办法使用Mercurial存储库作为Git子模块?

我很高兴地使用子模块来跟踪我的项目所依赖的所有库。 事情是我正在使用一个名为core-plot的库,它只有一个公共的mercurial repository。 我可以在只读的Git仓库中对其进行镜像,但这是我得到的最佳select吗? 我曾经看到Mercurial中有模块来跟踪Git中的事情。 有人知道如果有其他的方式存在?

使用git-hg

首先,确保主存储库下有一个(非Mercurial)git子模块。 如果您还没有其他子模块,则只需为除core-plot之外的某个库创build一个虚拟子模块,例如:

 main-repo $ git submodule add https://repo.url.com/repo.git repo 

其次,将core-plot库克隆到某个目录中。

 main-repo $ git-hg clone https://code.google.com/p/core-plot/ core-plot 

将新的回购添加到子模块列表。

 main-repo $ git submodule add ./core-plot core-plot main-repo $ git commit -am "added core-plot submodule" 

从现在开始,任何从这个回购的克隆都将拉动这两个仓库。 (在子模块初始化和更新之后)。

目前发现的一些问题是:

  • 如果你推到裸露的位置,那么repo链接和目录将会在裸露的位置创build,但是存储库不会被克隆到其中,而从这个裸露的其他位置将无法获得核心图lib。
  • 如果核心情节需要更新与git-hg将不得不git-hg pull

Hg回购的反问题git submodule? 在StackOverflow上也被询问。 最好的答案提到项目hg-git和git-hg。 另一个相关的反向问题是, 如何处理转换为Mercurial的回购库上的Git子模块

根据我的经验,大多数活动的非Git项目在GitHub上都有一个最新的git镜像。 看起来core-plot也有一个:

https://github.com/djw/core-plot

如果你愿意依靠任何设置镜像的人,看起来可能是获得子模块的最简单的select。