我一直很高兴地使用子模块来跟踪项目所依赖的所有库。问题是,我正在使用一个名为core-plot的库,它只有一个公共的mercurial存储库。我可能可以在一个只读Git存储库中镜像它,但这是我得到的最好选择吗?我已经看到Mercurial中有模块来跟踪Git中的内容。不知道是否存在相反的情况?
我一直很高兴地使用子模块来跟踪项目所依赖的所有库。问题是,我正在使用一个名为core-plot的库,它只有一个公共的mercurial存储库。我可能可以在一个只读Git存储库中镜像它,但这是我得到的最好选择吗?我已经看到Mercurial中有模块来跟踪Git中的内容。不知道是否存在相反的情况?
使用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"
从现在开始,任何克隆这个仓库的人都会拉取两个代码库(在进行submodule init和update后)。
到目前为止我发现的一些问题是:
git-hg pull
命令进行更新。相反的问题git submodule from Hg repo?也在StackOverflow上提问过。最好的答案提到了项目hg-git和git-hg。另一个相关的相反问题是如何处理转换为Mercurial格式的仓库中的Git子模块。
core-plot
包含进去并将其作为子模块处理?但是core-plot
的开发人员是用Mercurial来管理它的?在这种情况下,我认为你不需要在core-plot
存储库中执行git-hg submodule
。你只需要在那里执行git-hg fetch
。你应该从主项目的存储库中执行git submodule
。这就是我理解《Pro-git 6.6 "Submodules"》的方式。或者我没有理解你的意思? - Jim DeLaHunt./core-plot
子模块。 - Josh Bleecher Snydergit submodule add ./core-plot core-plot
步骤将子模块添加到模块列表时,会出现“这个答案仍然有效吗?”的问题。但是每当我尝试这样做时,git都会尝试克隆子模块repo,但它失败并告诉我它不存在。我想git-hg clone会处理克隆,而git submodule add不需要进行克隆,我错了吗? - maguirre根据我的经验,大多数活跃的非 git 项目在 GitHub 上都有最新的 git 镜像。看起来 core-plot
也有一个:
https://github.com/djw/core-plot
如果你愿意依赖于设置该镜像的人,似乎这可能是放置子模块的最简单选项。