带有Mercurial子存储库的Git存储库

带有Mercurial子存储库的Git存储库,git,version-control,mercurial,Git,Version Control,Mercurial,我有一个Git存储库,我需要使用一个库,该库作为使用Mercurial作为版本控制的源代码提供。我希望将版本控制保存在git存储库中,以便能够以简单的方式更新库 当前目录结构如下所示: root (git repo here) directory1 ... directoryN 在根文件夹中添加库并进行以下配置是否安全? root (git repo here) library_folder (mercurial repo here) directory

我有一个Git存储库,我需要使用一个
,该库作为使用Mercurial作为版本控制的源代码提供。我希望将版本控制保存在git存储库中,以便能够以简单的方式更新库

当前目录结构如下所示:

root (git repo here)
    directory1
    ...
    directoryN
根文件夹中添加库并进行以下配置是否安全?

root (git repo here)
    library_folder (mercurial repo here)
    directory1
    ...
    directoryN
如果是,使用mercurial更新
library\u文件夹所做的更改是否对Git可见,是否可以安全地提交给Git回购?

root (git repo here)
    library_folder (mercurial repo here)
    directory1
    ...
    directoryN
工作流应该是这样的:

  • 库中提供了新的更新
  • Developer_x使用Mercurial提取库更改
  • 开发者提交/推送对Git存储库的更改
  • 所有开发人员都像往常一样使用Git进行更改,他们有
    更新

  • 使用您建议的流,还将提交包含完整Mercurial历史记录的整个“.hg”。这似乎是一种浪费,大量的开销和等待发生的麻烦

    更安全的替代方法是使用转换Mercurial存储库,然后使用或git子树(不确定哪一个最好)存储对正确变更集的引用。 这样,您只需要在主存储库中存储一个引用,而不需要存储所有库内容和历史记录


    另一种选择是使用“一个大型存储库”,但随后必须提交除.hg目录之外的所有“库”文件。这很容易操作(复杂性较低)。缺点是您丢失了历史记录(您可以查看工具以导入包含历史记录和所有内容的代码)。

    您可以采取与Mathiasdm建议的相反的方向:直接从Git使用Mercurial repository

    将允许您以与使用Git存储库相同的方式(阅读Alex的评论)(我建议使用Git的子树,而不是子模块)