如何在Git上存储共享共同驱动程序的项目

时间:2015-03-18 10:28:49

标签: eclipse git repository

我想为我正在使用Eclipse开发的一些现有STM32嵌入式C项目创建Git存储库。 目前我在他们自己的文件夹中有两个独立的项目,以及一个包含ST的官方STM32 Cube外围驱动程序(.c和.h)文件的公共文件夹,这两个项目都使用这些文件。 驱动程序文件夹不应更改(新版本发布时除外),但项目文件将在开发时编辑。 我应该如何将它们放在Git上?我应该:

  1. 有三个回购(每个项目一个,另一个为司机)?
  2. 有两个repos并更改我的项目结构以将驱动程序放在两个项目中吗?
  3. 别的什么?
  4. 第一个选项似乎没问题,但是如果我不克隆项目和驱动程序repos,并将它们放到特定位置,我就看不出如何正确配置Eclipse。 第二个似乎更麻烦但是多余(在发布时更新所有项目以使用新驱动程序并不容易,并且它将使用更多服务器空间)。

    编辑:只是为了澄清,我没有使用STM32CubeMX软件。我只是使用STM32CubeF4外设驱动程序,它们基本上只是芯片内部外设的嵌入式C .c / .h源/头文件(可能还有一些用于DSP计算的.lib库文件)。有关.zip存档(当前版本为1.4.0),请参阅本页底部的“下载”按钮:http://www.st.com/web/en/catalog/tools/PF259243

1 个答案:

答案 0 :(得分:1)

如果你在其他几个repos中使用一个通用驱动程序,它看起来像git子模块的工作。

您有三个单独的存储库,例如在您的服务器上,两个项目都包含驱动程序代码作为子模块。每个项目仓库中存储的内容是:

  • URL 到驱动程序仓库(在您的服务器上)
  • 将使用提交的驱动程序仓库
  • 路径相对于项目仓库放置驱动程序克隆的位置

克隆项目仓库后,运行git submodule update --init,将 URL 的仓库克隆到相对的路径中,并将其提交< / em>已签出。

git submodule add --name <driver> /server/src/driver.git driver

/server/src/driver.git网址driver路径<driver>只是一个可选参考,可以简化子模块的未来工作如果它与 path

相同,请不要使用它
git子模块起初感觉有点麻烦。例如,克隆或签出父(项目)仓库中的提交不会使子模块工作文件为最新。您必须手动git submodule update

您最终会得到两个驱动程序克隆,每个项目都有一个工作文件结构。但这并不是多余的,因为它们是服务器上常见驱动程序仓库的克隆。

对于驱动程序的每次更新,都会将驱动程序更改推送到服务器。要更新到另一个项目中的最新驱动程序版本,请转到该项目的子模块,执行常规git push(您可能处于分离状态,在这种情况下,您需要签出master第一)。更新将显示在项目(不是子模块&#39;)git status中,它将告诉您&#34;新提交&#34;在驱动程序子模块中。更改的内容是在子模块中检出哪个SHA1;提交项目中的更改只会更新要检出的子模块提交。