目录
可以自定义外部源代码管理工具,以使用 MATLAB® 比较工具执行差异分析和合并。如果要通过源代码管理工具来比较 MATLAB 文件(例如实时脚本、MAT、SLX 或 MDL 文件),则可以对源代码管理工具进行配置以打开 MATLAB 比较工具。MATLAB 比较工具为合并 MathWorks® 文件提供了工具,并且与常用的软件配置管理和版本控制系统兼容。可以将自动合并工具与 Git™ 结合使用,以自动将包含不同子系统中更改的分支合并在同一 SLX 文件中。
要将源代码管理工具设置为使用 MATLAB 作为差异分析和合并应用程序,必须首先确定 mlDiff、mlMerge 和 mlAutoMerge 可执行文件的完整路径,然后按照正在使用的源代码管理工具的建议步骤进行操作。
查找 MATLAB 差异分析、合并和自动合并的完整路径
要获取所需的文件路径并启用外部源代码管理工具来重用打开的 MATLAB 会话,请在 MATLAB 中运行以下命令:
comparisons.ExternalSCMLink.setup()
该命令会在比较下设置称为允许外部源代码管理工具使用打开的 MATLAB 会话执行差异分析和合并的 MATLAB 预设项。
此命令还会显示要复制并粘贴到源代码管理工具设置中的文件路径:
-
在 Windows® 上:
Diff: matlabroot\bin\win64\mlDiff.exe Merge: matlabroot\bin\win64\mlMerge.exe AutoMerge: matlabroot\bin\win64\mlAutoMerge.bat
-
在 Linux® 上:
Diff: matlabroot/bin/glnxa64/mlDiff Merge: matlabroot/bin/glnxa64/mlMerge AutoMerge: matlabroot/bin/glnxa64/mlAutoMerge
-
在 Mac 上:
Diff: matlabroot/bin/maci64/mlDiff Merge: matlabroot/bin/maci64/mlMerge AutoMerge: matlabroot/bin/maci64/mlAutoMerge
其中,matlabroot 将替换为安装的完整路径,例如 C:\Program Files\MATLAB\R2020b。
注意
差异分析和合并操作将使用打开的 MATLAB 会话(如果有),并且仅在必要时打开 MATLAB。这些操作仅使用指定的 MATLAB 安装。
与 Git 的集成
命令行
要使用命令行 Git 配置 MATLAB 差异分析和合并工具,请执行下列步骤:
-
在 MATLAB 中运行以下命令。
comparisons.ExternalSCMLink.setupGitConfig()
此命令显示 mlDiff、mlMerge 和 mlAutoMerge 可执行文件的完整路径。它还会自动填充全局 .gitconfig 文件。例如:
[difftool "mlDiff"] cmd = \"C:/Program Files/MATLAB/R2020b/bin/win64/mlDiff.exe\" $LOCAL $REMOTE [mergetool "mlMerge"] cmd = \"C:/Program Files/MATLAB/R2020b/bin/win64/mlMerge.exe\" $BASE $LOCAL $REMOTE $MERGED [merge "mlAutoMerge"] driver = \"C:/Program Files/MATLAB/R2020b/bin/win64/mlAutoMerge.bat\" %O %A %B %A
注意
只需为您的 Git 设置执行一次步骤 1。
-
将存储库配置为使用 mlAutoMerge 可执行文件。在存储库中打开 .gitattributes 文件,并添加:
*.slx binary merge=mlAutoMerge
现在,当在同一个 SLX 文件中合并包含不同子系统中更改的分支时,MATLAB 会自动处理合并。
要从命令行 Git 运行 MATLAB 差异分析和合并工具,请使用 git difftool 和 git mergetool:
-
要使用 MATLAB 差异分析工具比较模型的两个修订版,请键入:
git difftool -t mlDiff <revisonID1> <revisionID2> myModel.slx
如果不提供修订版 ID,git difftool 会将工作副本与存储库副本进行比较。
如果没有指定要比较的模型,命令行 Git 将遍历所有修改的文件,并询问是否逐个比较它们。
-
要使用 MATLAB 合并工具解决模型中的合并冲突,请键入:
git mergetool -t mlMerge myModel.slx
如果没有指定要合并的模型,命令行 Git 将遍历所有文件,并询问您是否逐个合并它们。
sourece
SourceTree 是交互式 GUI 工具,可在 Windows 和 Mac 上用于可视化并管理 Git 存储库。
-
将 MATLAB 差异分析和合并工具配置为 SourceTree 外部工具:
-
在 SourceTree 处于打开状态下,点击 Tools > Options。
-
在 Diff 选项卡上,在 External Diff / Merge 下,用以下信息填写字段:
External Diff tool: Custom Diff Command: C:\Program Files\MATLAB\R2020b\bin\win64\mlDiff.exe Arguments: $LOCAL $REMOTE Merge tool: Custom Merge Command: C:\Program Files\MATLAB\R2020b\bin\win64\mlMerge.exe Arguments: $BASE $LOCAL $REMOTE $MERGED
-
-
使用 mlAutoMerge 可执行文件将您的存储库配置为在同一 SLX 文件中自动合并不同子系统中的更改:
-
打开全局 .gitconfig 文件并添加:
[merge "mlAutoMerge"] driver = \"C:/Program Files/MATLAB/R2020b/bin/win64/mlAutoMerge.bat\" %O %A %B %A
-
在存储库中打开 .gitattributes 文件,并添加:
*.slx binary merge=mlAutoMerge
-
提示
自定义 mlDiff、mlMerge 和 mlAutoMerge 可执行文件的完整路径,以匹配 MATLAB 安装和正在使用的操作系统。
要在 SourceTree 中使用 MATLAB 差异分析工具,请右键点击 Unstaged files 下的修改文件,然后选择 External Diff。
要在 SourceTree 检测到合并冲突时使用 MATLAB 合并工具,请选择 Uncommitted changes 分支,右键点击一个修改的文件,然后选择 Resolve Conflicts > Launch External Merge Tool。
与 SVN 的集成
TortoiseSVN
使用 TortoiseSVN,可以根据文件扩展名自定义您的差异分析和合并工具。例如,要对 SLX 文件使用 MATLAB 差异分析和合并工具,请执行下列步骤:
-
在任何文件资源管理器窗口中右键点击,然后选择 TortoiseSVN > Settings 以打开 TortoiseSVN 设置。
-
在 Settings 边栏中,选择 Diff Viewer。点击 Advanced 以根据文件扩展名指定差异分析应用程序。
-
点击 Add,并在字段中填写扩展名和 mlDiff 可执行文件路径:
Filename, extension or mime-type: .slx External Program: "C:\Program Files\MATLAB\R2020b\bin\win64\mlDiff.exe" %base %mine
-
点击 OK,重复相同步骤来添加另一个文件扩展名。
-
在 Settings 边栏中,选择 Diff ViewerMerge Tool。点击 Advanced 以根据文件扩展名指定合并应用程序。
-
点击 Add,并在字段中填写扩展名和
mlMerge
可执行文件路径:Filename, extension or mime-type: .slx External Program: "C:\Program Files\MATLAB\R2020b\bin\win64\mlMerge.exe" %base %mine %theirs %merged
-
点击 OK,重复相同步骤来添加另一个文件扩展名。
现在,可以使用 MATLAB 工具进行差异分析和合并,就像使用 TortoiseSVN 默认差异分析和合并应用程序一样。
注意
不支持使用 SVN 自动合并二进制文件,如 SLX 文件。
与其他源代码管理工具的集成
Perforce P4V
使用 Perforce® P4V,您可以根据文件扩展名自定义差异分析和合并工具。要对 SLX 文件使用 MATLAB 差异分析和合并工具,请执行下列步骤(此处仅为示例):
-
在 Perforce 中,点击 Edit > Preferences。
-
在 Preferences 边栏中,选择 Diff。在 Specify diff application by extension (overrides default) 下,点击 Add。
-
在 Add File Type 对话框中,输入以下信息:
Extension: .slx Application: C:\Program Files\MATLAB\R2020b\bin\win64\mlDiff.exe Arguments: %1 %2
-
点击保存。
-
在 Preferences 边栏中,选择 Merge。在 Specify merge application by extension (overrides default) 下,点击 Add。
-
在 Add File Type 对话框中,输入以下信息:
Extension: .slx Application: C:\Program Files\MATLAB\R2020b\bin\win64\mlMerge.exe Arguments: %b %2 %1 %r
-
点击 Save,并对其他文件扩展名重复上述步骤。
提示
自定义 mlDiff 和 mlMerge 可执行文件的完整路径,以匹配 MATLAB 安装和您正在使用的操作系统。
可以使用 MATLAB 工具进行差异分析和合并,就像使用 Perforce 的默认差异分析和合并应用程序一样。