2014-11-05 173 views
0

我有一个Git仓库,我需要使用作为源代码交付的library,使用Mercurial作为版本控制。我想让我的git仓库中的版本控制能够以一种简单的方式更新库。Git仓库与Mercurial子仓库

当前目录结构如下:

root (git repo here) 
    directory1 
    ... 
    directoryN 

是否可以安全添加库在root文件夹,并具有以下配置?

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

如果是,是否更改使用水银可见的Git更新library_folder制成,它们是安全的承诺到Git回购?

的工作流程应该是这样的:在library

  • Developer_x可用

    1. 新的更新使用水银
    2. Developer_x提交/推动修改Git仓库拉库变化
    3. 所有的开发者都像往常一样使用Git来进行更改,并且他们有library更新
  • 回答

    1

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

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

    另一种方法是去'一个大型资源库',但是你必须提交所有的'库'文件,除了的.hg目录。这可以很容易地处理(复杂性较低)。缺点是你失去了历史(你可以查看工具来导入历史和所有代码)。