Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

自定义外部源代码管理以使用 MATLAB 执行差异分析和合并

您可以自定义外部源代码管理工具,以使用 MATLAB® 比较工具执行差异分析和合并。如果您要通过源代码管理工具来比较 MATLAB 文件(例如实时脚本、MAT、SLX 或 MDL 文件),则可以对源代码管理工具进行配置以打开 MATLAB 比较工具。MATLAB 比较工具为合并 MathWorks® 文件提供了工具,并且与常用的软件配置管理和版本控制系统兼容。您可以将自动合并工具与 Git™ 结合使用,以自动将包含不同子系统中更改的分支合并在同一 SLX 文件中。

要将源代码管理工具设置为使用 MATLAB 作为差异分析和合并应用程序,您必须首先确定 mlDiffmlMergemlAutoMerge 可执行文件的完整路径,然后按照您正在使用的源代码管理工具的建议步骤进行操作。

查找 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.exe
  • 在 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 差异分析和合并工具,请执行下列步骤:

  1. 在 MATLAB 中运行以下命令。

    comparisons.ExternalSCMLink.setupGitConfig()

    此命令显示 mlDiffmlMergemlAutoMerge 可执行文件的完整路径。它还会自动填充全局 .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.exe\" %O %A %B %A

    注意

    您只需为您的 Git 设置执行一次步骤 1。

  2. 将您的存储库配置为使用 mlAutoMerge 可执行文件。在您的存储库中打开 .gitattributes 文件,并添加:

    *.slx binary merge=mlAutoMerge

    现在,当您在同一个 SLX 文件中合并包含不同子系统中更改的分支时,MATLAB 会自动处理合并。

要从命令行 Git 运行 MATLAB 差异分析和合并工具,请使用 git difftoolgit mergetool

  • 要使用 MATLAB 差异分析工具比较模型的两个修订版,请键入:

    git difftool -t mlDiff <revisonID1> <revisionID2> myModel.slx

    如果您不提供修订版 ID,git difftool 会将工作副本与存储库副本进行比较。

    如果您没有指定要比较的模型,命令行 Git 将遍历所有修改的文件,并询问您是否逐个比较它们。

  • 要使用 MATLAB 合并工具解决模型中的合并冲突,请键入:

    git mergetool -t mlMerge myModel.slx

    如果您没有指定要合并的模型,命令行 Git 将遍历所有文件,并询问您是否逐个合并它们。

SourceTree

SourceTree 是交互式 GUI 工具,可在 Windows 和 Mac 上用于可视化并管理 Git 存储库。

  1. 将 MATLAB 差异分析和合并工具配置为 SourceTree 外部工具:

    1. 在 SourceTree 处于打开状态下,点击 Tools > Options

    2. Diff 选项卡上,在 External Diff / Merge 下,用以下信息填写字段:

      External Diff tool:CustomDiff Command: C:\Program Files\MATLAB\R2020b\bin\win64\mlDiff.exe
      Arguments: $LOCAL $REMOTE
      Merge tool:CustomMerge Command: C:\Program Files\MATLAB\R2020b\bin\win64\mlMerge.exe
      Arguments: $BASE $LOCAL $REMOTE $MERGED

  2. 使用 mlAutoMerge 可执行文件将您的存储库配置为在同一 SLX 文件中自动合并不同子系统中的更改:

    1. 打开全局 .gitconfig 文件并添加:

      [merge "mlAutoMerge"]
         driver = \"C:/Program Files/MATLAB/R2020b/bin/win64/mlAutoMerge.exe\" %O %A %B %A

    2. 在您的存储库中打开 .gitattributes 文件,并添加:

      *.slx binary merge=mlAutoMerge

提示

自定义 mlDiffmlMergemlAutoMerge 可执行文件的完整路径,以匹配 MATLAB 安装和您正在使用的操作系统。有关详细信息,请参阅查找 MATLAB 差异分析、合并和自动合并的完整路径

要在 SourceTree 中使用 MATLAB 差异分析工具,请右键点击 Unstaged files 下的修改文件,然后选择 External Diff

要在 SourceTree 检测到合并冲突时使用 MATLAB 合并工具,请选择 Uncommitted changes 分支,右键点击一个修改的文件,然后选择 Resolve Conflicts > Launch External Merge Tool

与 SVN 的集成

TortoiseSVN

使用 TortoiseSVN,您可以根据文件扩展名自定义您的差异分析和合并工具。例如,要对 SLX 文件使用 MATLAB 差异分析和合并工具,请执行下列步骤:

  1. 在任何文件资源管理器窗口中右键点击,然后选择 TortoiseSVN > Settings 以打开 TortoiseSVN 设置。

  2. Settings 边栏中,选择 Diff Viewer。点击 Advanced 以根据文件扩展名指定差异分析应用程序。

  3. 点击 Add,并在字段中填写扩展名和 mlDiff 可执行文件路径:

    Filename, extension or mime-type: .slx
    External Program: "C:\Program Files\MATLAB\R2020b\bin\win64\mlDiff.exe" %base %mine
  4. 点击 OK,重复相同步骤来添加另一个文件扩展名。

  5. Settings 边栏中,选择 Diff ViewerMerge Tool。点击 Advanced 以根据文件扩展名指定合并应用程序。

  6. 点击 Add,并在字段中填写扩展名和 mlMerge 可执行文件路径:

    Filename, extension or mime-type: .slx
    External Program: "C:\Program Files\MATLAB\R2020b\bin\win64\mlMerge.exe" %base %mine %theirs %merged
  7. 点击 OK,重复相同步骤来添加另一个文件扩展名。

现在,您可以使用 MATLAB 工具进行差异分析和合并,就像您使用 TortoiseSVN 默认差异分析和合并应用程序一样。

注意

不支持使用 SVN 自动合并二进制文件,如 SLX 文件。

与其他源代码管理工具的集成

Perforce P4V

使用 Perforce® P4V,您可以根据文件扩展名自定义您的差异分析和合并工具。要对 SLX 文件使用 MATLAB 差异分析和合并工具,请执行下列步骤(此处仅为示例):

  1. 在 Perforce 中,点击 Edit > Preferences

  2. Preferences 边栏中,选择 Diff。在 Specify diff application by extension (overrides default) 下,点击 Add

  3. Add File Type 对话框中,输入以下信息:

    Extension:.slxApplication: C:\Program Files\MATLAB\R2020b\bin\win64\mlDiff.exe
    Arguments: %1 %2
    

  4. 点击保存

  5. Preferences 边栏中,选择 Merge。在 Specify merge application by extension (overrides default) 下,点击 Add

  6. Add File Type 对话框中,输入以下信息:

    Extension:.slxApplication: C:\Program Files\MATLAB\R2020b\bin\win64\mlMerge.exe
    Arguments: %b %2 %1 %r

  7. 点击 Save,并对其他文件扩展名重复上述步骤。

提示

自定义 mlDiffmlMerge 可执行文件的完整路径,以匹配 MATLAB 安装和您正在使用的操作系统。有关详细信息,请参阅查找 MATLAB 差异分析、合并和自动合并的完整路径

您可以使用 MATLAB 工具进行差异分析和合并,就像您使用 Perforce 的默认差异分析和合并应用程序一样。

相关主题