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

Joh*_*ohn 5 matlab simulink dependency-management

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

一个并行的例子是使用Gradle构建应用程序并声明项目的依赖关系,包括所需的版本号.成绩将解析并下载构建项目所需的版本.

例如,以下声明依赖于版本2.1 library和版本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.+")
}
Run Code Online (Sandbox Code Playgroud)

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

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

小智 0

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

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

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

目标:

  • 为参与该项目的每个人提供一致的设置。
  • 依赖性的可追溯性。
  • 轻松持续集成。

我们如何做(示例):

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

优点:

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

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