【问题标题】:git submodule from Hg repo?来自 Hg 回购的 git 子模块?
【发布时间】:2010-11-07 12:57:58
【问题描述】:

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

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

【问题讨论】:

    标签: git mercurial git-submodules


    【解决方案1】:

    由于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 存储库。

    rosetta stone”中列出了其他出色的 git-hg 命令。

    【讨论】:

    • 示例中有错字。如上文所述,“$ hg push”应为“$ hg gpush”。除此之外,@VonC 的回答对我很有帮助。谢谢! :-)
    • 这个例子的命名很混乱。主存储库目录是什么,子模块/子存储库目录是什么?
    • @einpoklum 从我从这个 7 年前的问题中可以看出,子模块是已迁移到 mercurial 的外部存储库。目标是从本地 mercurial 克隆推送到远程 Git 存储库,然后任何 Git 父存储库都可以将其作为子模块引用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多