当前位置:  开发笔记 > 开发工具 > 正文

具有单个子模块的多个回购

如何解决《具有单个子模块的多个回购》经验,为你挑选了1个好方法。

我找了一会儿却找不到答案(也许我不知道该看什么).

我们有一个主库,它是一个自己的存储库(让我们称它为Lib)它包含我们的大多数模块和子模块.我们还说它的大小为2GB ......

现在我们有很多项目,例如:ProjA,ProjB,ProjC,每个项目都使用Lib作为子模块.

ProjA

Lib(分支:master,commit#:1)

ProjB

Lib(分支:其他,提交#:2)

ProjA

Lib(分支:master,commit#:4)

因此,虽然我能够保持每个项目引用正确的库(aka子模块)版本.我现在有3*2GB = 6GB的THE SAME子模块.

有没有办法在保持引用的正确文件/版本控制的同时引用单个子模块?

例如.

ProjA

Lib/base_lib.h(v1.0)

LIB/file_only_in_this_commit

ProjB

Lib/base_lib.h(v1.0)

ProjC

Lib/base_lib.h(v1.1)

谢谢!



1> yairchu..:

您可以使用git worktree(自git 2.5起可用)为Lib子模块创建额外的工作树,位于ProjA,ProjB等内部.

因为git worktree使多个具有相同名称的工作树(所有被称为"Lib")变得很痛苦,我只是创建了一个脚本,share_submodules来解决这些困难并创建额外的工作树而不是子模块,将其设置为正确的子模块提交,并以递归方式对共享模块中的所有子模块执行此操作.

git submodule update --init --recursive除了所有副本都引用一个模块的对象之外,它应该像子模块一样工作.

如果您通过删除子模块转换到它,那么您.git和我创建的stray子模块文件会创建find_stray_submodules.py来清理它们.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有