首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何减少同一源的多个子模块的内存占用?

如何减少同一源的多个子模块的内存占用?
EN

Stack Overflow用户
提问于 2017-06-16 09:16:32
回答 1查看 349关注 0票数 4

我有一个包含多个Git子模块的大型项目。一个主要项目使用不同图书馆的集合,而一些图书馆自己使用图书馆。所有库都可以独立使用,因此它们都需要一个包含测试基础结构(VUnit和UVVM)的子模块。

Git子模块树如下所示:

代码语言:javascript
运行
复制
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在每个子模块上创建完整的对象存储。

代码语言:javascript
运行
复制
.git/
  modules/
    libA/
      modules/
        UVVM/
        VUnit/
    libB/
      modules/
        UVVM/
        VUnit/
    libC/
      modules/
        libA/
          modules/
            UVVM/
            VUnit/
        UVVM/
        VUnit/
    libD/
      modules/
        UVVM/
        VUnit/
    UVVM/
    VUnit/

服务器上的内存占用非常低,因为所有子模块都指向同一个存储库。但是客户端的内存占用非常高。

EN

回答 1

Stack Overflow用户

发布于 2017-06-21 03:18:13

如果将.git/modules/libA/modules/UVVM作为唯一的源存储库:

  1. 删除ProjectA/libB/UVVM (工作树)
  2. 删除ProjectA/.git/modules/libB/modules/UVVM (源存储库)
  3. cd ProjectA/libA/UVVM
  4. 在ProjectA/libA/UVVM子模块(存储库) 中创建LibB分支
    • 这是给ProjectA/libB/UVVM.的

  1. 运行git worktree add ../../libB/UVVM LibB

现在,工作树LibA/UVVMLibB/UVVM共享同一个源存储库.git/modules/libA/modules/UVVM

对rest UVVM重复执行相同的操作,与VUnit执行类似的操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44585425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档