21

我有一个非常古老的项目,它直接包含来自另一个项目的源代码,而不是将其链接为库。在糟糕的日子里,当我将所有内容都保存在 CVS 中时,我在供应商分支上拥有外部代码并定期导入。现在我的项目在 git 中,将外部项目包含为子模块会更有意义。但是,有一个问题:外部项目已迁移到 Mercurial。我找到了 git-hg 和 hg-git 项目,但我不确定其中任何一个是否正确处理子模块。

有没有办法创建一个指向 Hg 存储库而不是 git 存储库的 git 子模块?

4

1 回答 1

12

由于hg-git确实提到尚不支持子模块,因此只剩下一个手动选项:

  • 在您可以推送访问的某个地方设置一个 Git 存储库,
  • 将其添加为 Git 遥控器,然后
  • hg gpush从您的项目中运行。

例如:

$ cd hg-git # (an Hg repository)
$ hg gremote add origin git@github.com/schacon/hg-git.git
$ hg gpush

该 Git 存储库将代表您的子模块,但如果您修改并推送该子模块,您仍然必须从该 Git 存储库拉到实际的 Hg 存储库。

其他伟大的 git-hg 命令列在这个“罗塞塔石碑”中。

于 2009-07-02T05:59:59.233 回答