如何处理转换为Mercurial的repo上的Git子模块



开始:

$ 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,之后发生了一些神奇的事情。由于我现在已经将回购转换为Mercurial(使用hgext.git扩展),我不知道该怎么办。是否有一个等效的过程(我需要这2个Git模块在我的Mercurial repo)?

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就知道要从子存储库签出哪个版本。

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

最新更新