10

开始:

$ cat .gitmodules 
[submodule "utils/external/firepython"]
    path = utils/external/firepython
    url = git://github.com/darwin/firepython.git
[submodule "utils/external/textile"]
    path = utils/external/textile
    url = git://github.com/jsamsa/python-textile.git

虽然这仍然是一个 Git 存储库,但我需要运行git submodule init,然后发生了一些神奇的事情。由于我现在已经将 repo 转换为 Mercurial(使用hgext.git扩展),所以我不知道该怎么做。是否有等效的过程(我的 Mercurial 存储库中需要这 2 个 Git 模块)?

4

1 回答 1

13

Mercurial 支持不同类型的子存储库:Mercurial、Subversion 和 Git。所以你可以创建一个.hgsub文件

utils/external/firepython = [git]git://github.com/darwin/firepython.git
utils/external/textile    = [git]git://github.com/jsamsa/python-textile.git

这将通知 Mercurial 在克隆 Mercurial 存储库时克隆您的 Git 存储库。您需要第一次自己制作 Git 克隆,或者从磁盘上的其他位置复制它们:

$ git clone git://github.com/darwin/firepython.git utils/external/firepython
$ git clone git://github.com/jsamsa/python-textile.git utils/external/textile
$ hg add .hgsub
$ hg commit -m 'Added Git subrepositories'

然后,您会注意到 Mercurial 已向.hgsubstate您的存储库添加了一个文件,其中存储了有关 Git 子存储库的信息。需要此文件以便 Mercurial 在您制作新的 Mercurial 克隆时知道要从您的子存储库中签出哪个修订。

我的一位同事编写了一个子存储库指南,您可能会觉得它很有用。

于 2011-04-10T16:08:55.493 回答