比方说,我有几个小型独立项目,都使用它们自己的git存储库。
我想这可能是任何一种语言,但实际上,我主要对C,C ++和Java感兴趣。
除了支持这些项目外,我还有各种小型实用程序函数和类,如果可以的话,还有一个“个人标准库”(此后我将其称为“ lib”),但请记住,它并不是一个整体东西:您可以从中挑选物品)。在我的大多数项目中,我都使用该库中的一个或多个文件。
我正在寻找解决这种情况的方法。每个git存储库在某种意义上应该是独立的,如果您单独克隆项目,则它会附带编译它所需的所有文件。也就是说,我不想将整个库添加为子模块(实际上,某些项目可能是几个源文件,其中一个源于库,并且我不想导入100个其他文件)。 / p>
每个项目都应该能够从lib中选择使用的文件。如果我更新lib,理想情况下应该有一种简单的方法让项目来获取更新。
我考虑过符号链接:每个项目都将符号链接到它想要从lib中获取的文件,但是git并不遵循符号链接。我考虑过硬链接-也许行得通吗?对于不支持硬链接的文件系统来说,移植性似乎不太好。
我如何实现我的目标?
答案 0 :(得分:1)
最好通过 submodules
解决 git submodule add /url/repo
一个模块将添加一个包含该模块的子文件夹,该模块的内容为克隆的存储库。
URL实际上可以是相对路径:
<repository>
是新子模块的原始存储库的URL。这可以是绝对URL,也可以是(如果以./
或../
开头)相对于超级项目的默认远程存储库的位置。