git - 将库开发转移到自己的项目中

标签 git versioning git-submodules subtree

目前,我正在开发一个嵌入式项目。目前,我只有一个本地 git 存储库,因为我是唯一的开发人员。不过,我正在考虑将其开源并将其移至 github(如果达到一定的功能级别:-))。 因此,我正在考虑制定一个良好的项目结构,以便其他开发人员可以加入。

目前,该项目的设置非常简单。

我的文件夹结构如下:

/ (project root)
|-- .git
|-- documentation
|-- software
|      |
|      |-- subfolder_1
|      |       |
|      |       |-- someLib
|      |       |-- someOtherLib
|      |       
|      |-- subfolder_2
|
|-- hardware

您会看到,只是一堆嵌套文件夹,其中 .git 文件夹位于项目的根目录中。

对于该项目,我需要开发一个库,我们称之为someLib(上面“图片”中的someLib文件夹目前是空的,因为我还没有开始使用该lib)。

这个库可能会变得非常大。而且,更重要的是,它不包含与该特定项目相关的任何功能。我,或者甚至其他人,也可能在另一个项目中使用它。

所以,我认为将库作为自己的项目是一个好主意。 然后,我可能会使用 git 子模块或子树将库“链接”到我的项目中。

现在有什么问题吗?

好吧,当我将库移动到它自己的项目中时,我将拥有其他文件。在主项目中开发库很容易,但在它自己的项目中,我需要额外的测试代码、makefile、“main.c”和(因为它是嵌入式的)硬件驱动程序。如果没有这些额外的东西,我无法运行/测试该库。

这看起来像:

/ (someLib root)
|-- .git
|-- documentation
|-- makefile
|-- main.c
|-- hardwareDriver_1
|-- hardwareDriver_2
|-- someLib
       |
       |-- someLib.c
       |-- someLib.h

如您所见,我不想在我的主项目中使用所有这些东西。

那么,当使用子模块或子树方法时,有没有办法将这些内容排除在主项目中?

或者,更重要的是,您将如何解决这个问题?

我怀疑我是第一个遇到这个问题的人。有什么好的提示吗?

最佳答案

Then, I might use git submodule or subtree to "link" the lib into my project.

与其使用子模块或子树,不如将此库用作库怎么样?

您可以使用此子模块生成 .so,并让您的主代码使用该包。然后,两个项目(库和主项目)文件将完全解耦,从而解决您的问题。

关于git - 将库开发转移到自己的项目中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25152937/

相关文章:

python - 如何从git子模块导入python文件

Git 和关于同时团队合作的问题

ios - 将当前应用程序的构建版本输出为字符串 - Xamarin.iOS

java - 清理代码会破坏二进制兼容性

git - 如何 git grep 主存储库及其所有子模块?

python - Git 子模块在 python 项目中使用后会引发导入错误

git - Heroku:从本地目录而不是 GitHub 存储库推送到 Heroku

git clone 无法访问 docker 容器内的主机

git - 将 debuild/dpkg 设置为始终忽略 .git 目录

git - 如何在 autoconf 管理的项目中插入基于 Git 的版本?