You can customize external source control tools to use the MATLAB® Comparison Tool for diff and merge. If you want to compare MATLAB files such as live scripts, MAT, SLX, or MDL files from your source control tool, then you can configure your source control tool to open the MATLAB Comparison Tool.
The MATLAB Comparison Tool provides tools for merging MathWorks® files and is compatible with popular software configuration management and version control systems.
To set up your source control tool to use MATLAB as the application for diff and merge, you must first determine the full paths
of the mlDiff
and mlMerge
executable files, then
follow the recommended steps for the source control tool you are using.
To get the required file paths and enable external source control tools to reuse open MATLAB sessions, run this command in MATLAB:
comparisons.ExternalSCMLink.setup()
This command sets the MATLAB preference, under Comparison, called Allow external source control tools to use open MATLAB sessions for diffs and merges.
This command also displays the file paths you will copy and paste into your source control tool setup:
On Windows®:
Diff: matlabroot\bin\win64\mlDiff.exe
Merge: matlabroot\bin\win64\mlMerge.exe
On Linux®:
Diff: matlabroot/bin/glnxa64/mlDiff
Merge: matlabroot/bin/glnxa64/mlMerge
On Mac:
Diff: matlabroot/bin/maci64/mlDiff
Merge: matlabroot/bin/maci64/mlMerge
Where matlabroot
is replaced with the full path to your
installation, for example, C:\Program Files\MATLAB\R2020a
.
Your diff and merge operations use open MATLAB sessions when available, and only open MATLAB when necessary. The operations only use the specified MATLAB installation.
To configure MATLAB diff and merge tools with command-line Git™:
In a Terminal, a Command Prompt or a Shell, type:
git config --global --edit
Copy the following lines into the .gitconfig
file:
[difftool "mlDiff"] cmd = 'C:/Program Files/MATLAB/R2020a/bin/win64/mlDiff.exe' $LOCAL $PWD/$REMOTE [mergetool "mlMerge"] cmd = 'C:/Program Files/MATLAB/R2020a/bin/win64/mlMerge.exe' $PWD/$BASE $PWD/$LOCAL $PWD/$REMOTE $PWD/$MERGED
Customize the full path of the mlDiff
and
mlMerge
executables to match both the
MATLAB installation and the operating system you are using.
For more information, see Finding the Full Paths for MATLAB Diff and Merge.
In the .gitconfig
file, you must use
Linux separators '/'
even on Windows.
To run the MATLAB diff and merge tools from command-line Git, use git difftool
and git
mergetool
:
To compare two revisions of a model using MATLAB diff tool, type:
git difftool -t mlDiff <revisonID1> <revisionID2> myModel.slx
If you do not provide revisions ID, git difftool
compares the working copy to the repository copy.
If you do not specify which model you want to compare, command-line Git will go through all modified files and ask you if you want to compare them one by one.
To resolve a merge conflict in a model using MATLAB merge tool, type:
git mergetool -t mlMerge myModel.slx
If you do not specify which model you want to merge, command-line Git will go through all files and ask you if you want to merge them one by one.
SourceTree is an interactive GUI tool that visualizes and manages Git repositories for Windows and Mac.
To configure the MATLAB diff and merge tools as SourceTree external tools:
With SourceTree open, click Tools > Options.
On the Diff tab, under External Diff / Merge, fill the fields with the following information:
External Diff tool:Custom
Diff Command: C:\Program Files\MATLAB\R2020a\bin\win64\mlDiff.exe Arguments: $LOCAL $PWD/$REMOTE Merge tool:Custom
Merge Command: C:\Program Files\MATLAB\R2020a\bin\win64\mlMerge.exe Arguments: $PWD/$BASE $PWD/$LOCAL $PWD/$REMOTE $PWD/$MERGED
Customize the full path of the mlDiff
and
mlMerge
executables to match both the
MATLAB installation and the operating system you are
using. For more information, see Finding the Full Paths for MATLAB Diff and Merge.
To use the MATLAB diff tool from within SourceTree, right-click a modified file under Unstaged files and select External Diff.
To use the MATLAB merge tool when SourceTree detects a merge conflict, select the Uncommitted changes branch, right-click a modified file, and select Resolve Conflicts > Launch External Merge Tool.
With TortoiseSVN, you can customize your diff and merge tools based on the file
extension. To use MATLAB diff and merge tools for .slx
files, for example:
Right-click in any file explorer window and select TortoiseSVN > Settings to open TortoiseSVN settings.
In the Settings sidebar, select Diff Viewer. Click Advanced to specify the diff application based on file extensions.
Click Add and fill the fields with the
extension and the mlDiff
executable path:
Filename, extension or mime-type: .slx External Program: "C:\Program Files\MATLAB\R2020a\bin\win64\mlDiff.exe" %base %mine
Click OK and repeat the same steps to add another file extension.
In the Settings sidebar, select Diff ViewerMerge Tool. Click Advanced to specify the merge application based on file extensions.
Click Add and fill the fields with the
extension and mlMerge
executable path:
Filename, extension or mime-type: .slx External Program: "C:\Program Files\MATLAB\R2020a\bin\win64\mlMerge.exe" %base %mine %theirs %merged
Click OK and repeat the same steps to add another file extension.
You can use the MATLAB tools for diff and merge the same way you would use the TortoiseSVN default diff and merge applications.
With Perforce® P4V, you can customize your diff and merge tools based on the file
extension. To use MATLAB diff and merge tools for .slx
files, for example:
In Perforce, click Edit > Preferences.
In the Preferences sidebar, select Diff. Under Specify diff application by extension (overrides default), click Add.
In the Add File Type dialog box, enter the following information:
Extension: .slx
Application: C:\Program Files\MATLAB\R2020a\bin\win64\mlDiff.exe
Arguments: %1 %2
Click Save.
In the Preferences sidebar, select Merge. Under Specify merge application by extension (overrides default), click Add.
In the Add File Type dialog box, enter the following information:
Extension: .slx
Application: C:\Program Files\MATLAB\R2020a\bin\win64\mlMerge.exe
Arguments: %b %2 %1 %r
Click Save and repeat the steps for other file extensions.
Customize the full path of the mlDiff
and
mlMerge
executables to match both the MATLAB installation and the operating system you are using. For more
information, see Finding the Full Paths for MATLAB Diff and Merge.
You can use the MATLAB tools for diff and merge the same way you would use the Perforce default diff and merge applications.