第十八篇,Simulink with Git

一、综述

本篇以MATLAB R2021b为基础讲解如何对Simulink模型做Git管理,mdl与slx均可。

Git并非只能对手写代码做版本管理,它的应用十分广泛,囊括了各种使用编程语言编写的代码、脚本、office文档,以及本篇要讲述的Simulink模型(含MATLAB脚本.m、.mat等各种格式的文件)。

MATLAB使用IDE的集成式方法做Git管理,内嵌原生Git内核以及自带的比较工具,既可以对传统如.c.cpp以及.m等代码类文件进行常规的文本比较,也可以对Simulink模型做可视化对比,在MATLAB体系下一以贯之地提供丰富且优质的服务。

注:查看本篇内容的前提是开发者具备编程、MATLAB/Simulink、Git等基础以上的知识及能力,非小白。

二、无Git比对

MATLAB提供了一项非常贴心的功能,可以在未使用Git时单纯地做比较工作,如下图所示,在MATLAB主界面左上角点击【Compare】即可呼出比对窗口,如步骤2所示。在步骤2的比对窗口中首先选择要比较的文件,支持文件夹下的批量比对,其中“Include subfolders”复选框可设定比对操作是否涵盖子文件夹,这里做个简单示例,对两个m文件进行文本比对。

点击步骤2中的【Compare】按钮即可跳转到比对结果窗口,如下图:

如1所示即标识出了两份文件的差异,在这里我是把注释删掉做为差异,它标识出了差异的具体内容、所在代码行位置等,和常规Git操作等同;还提供了其它增量操作,如查看文件路径,点击如2所示小三角即可显示如3所示的文件完整路径,以备开发者应对可能的逻辑短路、临时遗忘;顶部菜单栏中提供的更丰富功能请自行深入探究。

依次按照上述步骤,最关键的对Simulink模型的比对呈现如下,这是我们最关心的核心功能之一。MATLAB以其特有的图形化方式做了精细的呈现。

和文本比对不同的是,Simulink模型比对采用了三窗口的形式,左侧窗口用展开树的形式对差异做宏观展示,右侧上下两个窗口分别对两个模型的差异之处做微观细节展示;点击左侧树中的条目,右侧即可直接跳转到模型中相应产生差异的位置,非常方便。

这里我制作了两个差异项,如图中所示,一个是如2所示Constant29这个常量模块数值的差异,一个是数值3一个是数值4;另一个是如3所示子模块名称的差异,一个叫”Subsystem_1”一个叫“Subsystem_2”。均高亮显示。

由于截图的原因可能看不清楚细节,不过无伤大雅,领会精神即可。

三、关联Git

讲过了对比操作,接下来我们讲一下版本管理中另一个核心功能,也就是关联Git的操作。

首先讲下如何像代码那般对Simulink模型创建仓库。

仓库以Simulink Project为基础,我们必须首先创建一个Project。在MALTAB中打开Simulink界面(此步不讲,默认会),选择“Blank Project”,在弹出的Create窗口中设置路径和Project Name,最后点击【OK】。

【OK】之后出来的界面很简单,它是跳转回了MATLAB主界面,比空荡荡的MATLAB主界面只是多了点儿Project相关的东西,不过同样空荡荡,只有2标识的.prj文件,在不起眼的角落用微弱的声音告诉世人我们刚才做了什么。之后的操作就是点击菜单栏中的1标识“Use Source Control”,大概翻译就是“使用源码控制”,接下来就正式引入Git了。

 在出现的扁平小窗口中点击“Add Project to Source Control”:

继续出现小窗口,这个小窗口里为我们提供代码管理工具选项(Git、SVN等)、告诉我们当前Project所在路径,点击【Convert】即可:

【Convert】之后即完成引入Git的操作,MATLAB主界面出现了新的变化。【Convert】有一个很快速的过程,如1所示跟装Visual Studio似的都打了勾说明顺利完成,如果有×可能操作失败需要检查检查了;然后就出现了2所示我们熟悉的Push、Pull、Branch等操作;3那里也出现了.gitignore、.gitattributes、.git等必要的文件(夹);当然了,我们不是在这个狭窄逼仄的空间里操作,所以点击【Open Project】进入到我们正式使用的界面。

四、日常操作

正式使用的界面也是我们日常操作最重的地方,仔细讲解一下:

4.1 创建仓库

如1所示为当前Git仓库中的内容,

  • 细小圆点,代表被ignore的;
  • 绿色圆圈,代表已commit;
  • 蓝色方块,代表相对上一版本发生修改但尚未commit;
  • 白色圆圈,代表未track,一般就是新进入目录的文件;
  • 黑色加号,代表已track的新入文件;
  • 实践发现MATLAB中可能淡化了add的概念。

如2所示为Project中的内容,All表示全部的,Project表示纳入到当前Simulink工程中的文件,这个和Git管理不冲突,Modified包含相对上一版本发生修改的以及新track的文件。

至于把文件纳入Project中的作用不甚了了,只做个操作上的简介吧:

比如MyModel.slx还没纳入Project中,那么在All中找到它,在它身上点鼠标右键,然后“Add to Project”中即可,之后Project那一栏里就有它了。

重要的是,对于未track的新文件,纳入Git管理是一个必须的操作(否则commit时会被落下),步骤如下:

  1. 在左侧文件树中找到,比如MyFunc.m;
  2. 鼠标右键,选择“Source Control”;
  3. 选择“Add to Git”。

至此,我们用Git管理的Simulink模型仓库已具备雏形,可以开展进一步操作了。

4.2 Commit

假设我们现在就在日常开发过程中,本次编辑完成,提交commit是这样的:

  1. 菜单栏中点击【Commit】;
  2. 弹出Commit窗口,输入Comment;
  3. 点击【Submit】完成提交,所有被track的文件(夹)即变成绿色圆圈标识。

4.3 分支管理

在上图中【Commit】右侧有【Branches】按钮,点击进入分支管理界面。分支管理界面为开发者展示了当前分支信息、提交历史、作者、提交人、差异文件等信息;另外,直接在差异文件上点击右键,选择“Show Difference…”即可如前文所述进行比对,非常便捷。

可以看到,分支管理界面还提供了分支列表、【Switch】、【Merge】等必要操作。

选定分支后点击【Switch】即可在分支间切换,不过最好在当前分支无修改或已stash时再switch,否则属于强行切换将带来附加操作,MATLAB也会给出下图所示的提醒。

分支列表中选择All,可查看全部分支的提交历史走向及互相关系:

创建分支:

  1. 打开分支管理界面,在分支列表中选择当前分支;
  2. 在提交历史中选择创建分支的提交点;
  3. Branch and Tag Creation,给新分支起名,如dev2;
  4. 点击【Create】按钮完成创建。

4.4 stash

在菜单栏【Commit】、【Branches】按钮右侧有【Stashes】按钮,点击后进入stash管理界面:

  1. 点击【New Stash】按钮对当前工作区创建stash,并回到未修改状态,即上一次提交完成的状态;
  2. Stash界面中会显示stash列表、所在分支及提交点、被缓存的文件、日期时间等信息;
  3. 点击【Pop】应用stash并删除、点击【Apply】应用但不删除、点击【Drop】删除但不应用相当于废了。

4.5 Remote

其它如Fetch、Push、Pull等与远程仓库相关的操作不再做细致解释,了解了前述内容后即可顺利操作,【Remote】按钮集成了设置、查看、校验远程仓库的功能。

五、debug 

整个创建过程基本是点点按按的自动化操作,无需手动介入,但第一次不太顺利,出现了一点儿小情况,具体细节记不清了,只模糊记得一个bug和费劲八虎找到的solution如下,不深究了,遇到什么进行不下去的阻碍时别硬上,试试道具:

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值