Simulink项目依赖关系管理和依赖关系解析

时间:2016-03-10 21:11:38

标签: matlab simulink dependency-management

在团队中处理项目并且项目依赖于不同的模型和库时,在Simulink项目中管理依赖项的最佳实践是什么?

并行示例是使用Gradle构建应用程序并声明项目的依赖项(包括所需的版本号)。成绩将解析并下载构建项目所需的版本。

e.g。以下声明对library版本2.1和版本1.0版本some-library的依赖性,以便下载可用的最新版本1.x(1.0,1.1,1.2 ......)使用

dependencies {
    compile("com.example:library:2.1")
    compile("com.example:some-library:1.+")
}

documentation for Simulink(以及here covering manifests)似乎在讨论具有版本号的项目中的模型。它似乎没有提到导入项目的库。仅在单个项目中使用的模型都可以包含在整个项目中,但是如果(例如)在适用的单独项目或库(或项目中定义的库)中定义的通用S函数会发生什么?跨多个项目?此要求的目的是帮助支持由持续集成服务器(如Jenkins)触发的自动构建过程。

我对使用Github Flow git分支策略轻松支持依赖项管理和自动依赖项解析的工作流感兴趣。

1 个答案:

答案 0 :(得分:0)

我花了很多时间在这个问题上。最后我没有在网上找到合适的解决方案,但我想分享我们现在使用的工作流程,这些工作流程满足了我们的需求。

简而言之:我们使用git submodules创建了自己的依赖关系管理。

假设:实际上,它更像是持久依赖项的版本管理,而不是提供动态添加新包或删除旧包或库的可能性。这也有效,但需要在主git存储库中添加或删除git子模块。

目标:

  • 为项目工作的每个人提供一致的设置。
  • 堕落的可追溯性。
  • 持续集成,省力。

我们如何做(示例):

  • 我们有项目A 项目B ,它们将在项目C 中使用。
  • 所有这三个项目都受git版本控制,仍在开发中。
  • 我们为项目A 项目B 设置了其他发布存储库,例如:位于网络驱动器上。
  • Project C 中,我们将 Project A Project B 的发布存储库添加为git子模块
  • 我们已经设置了某种自动部署,只将相关文件推送到这些版本库中。例如,如果我们想要对 Project C 可以访问的 Project B 进行更改,我们只在 Project B 的存储库中创建一个版本标记,它被推送到它的发布库。
  • Project C 中,我们更新了我们的git子模块,可以签出新的子模块版本(如果需要)。

<强>优点:

  • 由于git在主项目中存储了git子模块的签出版本(提交),因此我们可以确保每个人都使用相同的文件。
  • 在主项目中可以跟踪更改子模块的提交。
  • 主项目与依赖项之间的关系始终保持一致。
  • 持续集成应该“开箱即用”。我们正在使用GitLab和GitLab Runner,只需设置我们的运行器来递归获取子模块(如果是嵌套的子模块)。

我认为只要存储库不会变得太大,这种方法就会起作用,因为您不仅仅获取所需的版本,而且还获取整个版本历史记录。