gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 19:47:46 25 4
gpt4 key购买 nike

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

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

例如下面声明了对 library 2.1 版和 some-library 1.0 以上版本的依赖,因此最新版本 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-Function,会发生什么情况跨多个项目?此要求旨在帮助支持由 Jenkins 等持续集成服务器触发的自动构建过程。

我对一个工作流很感兴趣,它可以通过 Github Flow 轻松支持依赖关系管理和自动依赖关系解析。 git 分支策略。

最佳答案

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

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

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

目标:

  • 为参与该项目的每个人提供一致的设置。
  • 依赖关系的可追溯性。
  • 以更少的工作量进行持续集成。

我们如何做(示例):

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

优点:

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

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

关于matlab - Simulink 项目依赖管理和依赖解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35927370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com