我有一个包含多个Git子模块的大型项目。一个主要项目使用不同图书馆的集合,而一些图书馆自己使用图书馆。所有库都可以独立使用,因此它们都需要一个包含测试基础结构(VUnit和UVVM)的子模块。
Git子模块树如下所示:
ProjectA
o- libA
o- UVVM
o- VUnit
o- libB
o- UVVM
o- VUnit
o- libC
o- libA
o- UVVM
o- VUnit
o- UVVM
o- VUnit
o- libD
o- UVVM
o- VUnit
o- UVVM
o- VUnit我对Git的内部数据库和链接结构有一些了解。因此,子模块的BLOB存储在主存储库的.git目录中,该目录称为modules。它们通常具有与子模块目录名相同的符号名。
子模块指向其数据库主目录,其中包含一个包含相对路径的.git文件。作为回报,子模块数据库的配置文件指向子模块的工作树。
因此,所有UVVM子模块都指向同一个数据库是可能的,但是一个数据库怎么可能指向多个工作树呢?
我发现Git扩展可以与多个工作dirs一起工作,但它是否也适用于像我这样的子模块?
我也愿意听取其他建议。
编辑1:
这是.git目录中生成的内部结构。它一次又一次地为UVVM和VUnit在每个子模块上创建完整的对象存储。
.git/
modules/
libA/
modules/
UVVM/
VUnit/
libB/
modules/
UVVM/
VUnit/
libC/
modules/
libA/
modules/
UVVM/
VUnit/
UVVM/
VUnit/
libD/
modules/
UVVM/
VUnit/
UVVM/
VUnit/服务器上的内存占用非常低,因为所有子模块都指向同一个存储库。但是客户端的内存占用非常高。
发布于 2017-06-21 03:18:13
如果将.git/modules/libA/modules/UVVM作为唯一的源存储库:
git worktree add ../../libB/UVVM LibB现在,工作树LibA/UVVM和LibB/UVVM共享同一个源存储库.git/modules/libA/modules/UVVM。
对rest UVVM重复执行相同的操作,与VUnit执行类似的操作。
https://stackoverflow.com/questions/44585425
复制相似问题