如何从另一个 Git 存储库引用 Git monorepo 文件?

How can I reference a Git monorepo file from another Git repo?

我目前正在尝试将 SVN 存储库迁移到多个 Git 存储库中。原始的 SVN 存储库可以解释为一个单一存储库,因为它有几个独立的项目。由于 Git 标记,我想将这个 SVN monorepo 分解成一个 Git monorepo 和几个项目特定的 repos。这是我的场景:

我有一个 Git monorepo 调用 Libraries。这个 monorepo 包含几个相对独立的单个文件库,因此需要单独标记。把它想象成

Libraries
    math.h
    math.c
    file.h
    file.c
    ...

由于我认为这是一个单一的仓库,我将按以下方式标记

math/1.0.0
math/1.1.0
file/1.0.0
file/1.1.0

现在进入项目特定的回购协议。

我有一个名为 Project 1 的存储库,它需要引用 Libraries 存储库中的各个文件。更复杂的是,我需要将这些库文件注入到 Project 1 内的特定目录中。类似于以下内容:

Project 1
    headers
        math.h    // from math/1.0.0
        file.h    // from file/1.1.0
        project.h // project specific file
    source
        math.c    // from math/1.0.0
        file.c    // from file/1.1.0
        project.c // project specific file

所以基本上我希望项目特定的回购从 monorepo 引用标记的单个文件,我需要将它们放在项目特定回购的非常特定的目录中。

我可以使用子模块实现吗?

子模块始终表示父存储库中的子文件夹。

如果您 OS 支持它,那么您可以为这些文件的符号链接版本:

  • 特定文件夹
  • 库子模块文件夹。

这是在假设您 没有太多 那些文件的符号链接。