使用Mercurial子存储库的Git存储库

时间:2014-11-05 10:14:05

标签: git version-control mercurial

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

当前目录结构如下:

root (git repo here)
    directory1
    ...
    directoryN

root文件夹中添加库并进行以下配置是否安全?

root (git repo here)
    library_folder (mercurial repo here)
    directory1
    ...
    directoryN

如果是,是通过使用对Git可见的mercurial更新library_folder进行的更改是否可以安全地提交给Git回购?

工作流程应该是这样的:

  1. library
  2. 中提供的新更新
  3. Developer_x使用Mercurial
  4. 拉取库更改
  5. Developer_x将更改提交/推送到Git存储库
  6. 所有开发人员都像往常一样使用Git来提取更改,并且他们有library次更新

2 个答案:

答案 0 :(得分:1)

使用您建议的流程,整个' .hg'包含完整的Mercurial历史也将被提交。这似乎是浪费,很多开销和麻烦等待发生。

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

另一种选择是选择一个大型存储库',但是您必须承诺所有的'库'文件除了 .hg目录。这可以很容易使用(复杂性较低)。缺点是您丢失了历史记录(您可以查看使用历史记录导入代码的工具)。

答案 1 :(得分:0)

您可以向与Mathiasdm方向建议相反的方向移动:直接从Git使用Mercurial存储库。

Mercurial bridge in Git将允许您以相同的方式have and use Mercurial repositories(阅读Alex的评论),因为您使用Git存储库(我将建议Git的子树,而不是子模块)