小型通用共享组件

时间:2019-05-05 17:38:54

标签: git version-control

比方说,我有几个小型独立项目,都使用它们自己的git存储库。

我想这可能是任何一种语言,但实际上,我主要对C,C ++和Java感兴趣。

除了支持这些项目外,我还有各种小型实用程序函数和类,如果可以的话,还有一个“个人标准库”(此后我将其称为“ lib”),但请记住,它并不是一个整体东西:您可以从中挑选物品)。在我的大多数项目中,我都使用该库中的一个或多个文件。

我正在寻找解决这种情况的方法。每个git存储库在某种意义上应该是独立的,如果您单独克隆项目,则它会附带编译它所需的所有文件。也就是说,我不想将整个库添加为子模块(实际上,某些项目可能是几个源文件,其中一个源于库,并且我不想导入100个其他文件)。 / p>

每个项目都应该能够从lib中选择使用的文件。如果我更新lib,理想情况下应该有一种简单的方法让项目来获取更新。

我考虑过符号链接:每个项目都将符号链接到它想要从lib中获取的文件,但是git并不遵循符号链接。我考虑过硬链接-也许行得通吗?对于不支持硬链接的文件系统来说,移植性似乎不太好。

我如何实现我的目标?

1 个答案:

答案 0 :(得分:1)

最好通过 submodules

解决

git submodule add /url/repo一个模块将添加一个包含该模块的子文件夹,该模块的内容为克隆的存储库。

URL实际上可以是相对路径:

  

<repository>是新子模块的原始存储库的URL。这可以是绝对URL,也可以是(如果以./../开头)相对于超级项目的默认远程存储库的位置。