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

问题描述 投票:0回答:3

我很高兴使用子模块来跟踪我的项目所依赖的所有库。 问题是我正在使用一个名为 core-plot 的库,它只有一个公共的 Mercurial 存储库。 我可能可以将它镜像到只读 Git 存储库中,但这是我得到的最佳选择吗? 我看到 Mercurial 中有一些模块可以跟踪 Git 中的内容。 有人知道是否存在相反的方式吗?

git mercurial git-submodules
3个回答
27
投票

使用git-hg

首先,确保您的主存储库下有一个(非 Mercurial)git 子模块。如果您还没有其他子模块,只需为

core-plot
之外的某个库创建一个虚拟子模块,例如:

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"

从现在开始,此存储库中的任何克隆都将拉取这两个存储库。 (子模块初始化和更新后)。

到目前为止我发现的一些问题是:

  • 如果您推送到裸机,则将在裸机中创建存储库链接和目录,但存储库不会在其中克隆,并且从该裸机拉取的其他人将无法获取 core-plot 库。
  • 如果核心情节需要更新,则带有
    git-hg
    的核心情节必须
    git-hg pull

相反的问题 来自 Hg repo 的 git 子模块?也在 StackOverflow 上被问到。最佳答案提到了项目 hg-git 和 git-hg。另一个相关的反向问题是,如何处理转换为 Mercurial 的存储库上的 Git 子模块


15
投票

根据我的经验,大多数活跃的非 git 项目在 GitHub 上都有一个最新的 git 镜像。 看起来

core-plot
也有一个:

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

如果您愿意依赖设置该镜像的人,那么这似乎可能是安装子模块的最简单的选择。


0
投票

我想你可以使用hg-git

如果我理解正确的话,你用PIP安装它,然后:

  1. 编辑
    .hg/hgrc
    在路径下添加另一行,例如:
    git = https://github-gitlab.com/your/repo/path
  2. 然后就做
    hg push git
    (git是因为我在
    .hg/hgrc
    中添加了git但是你可以使用你想要的名称。
© www.soinside.com 2019 - 2024. All rights reserved.