Behavior when an input is verified for the first time.
Behavior depends on if an EmptyFiles can be found matching the current extension.
- If an EmptyFiles can be found matching the current extension, then the tool will be launch to compare the input to that empty file.
- If no EmptyFiles can be found no tool will be launched.
Behavior when a difference is detected between the input an existing current verified file.
If no tool is running for the comparison of the current verification (per test), a new tool instance will be launched.
If a tool is running for the comparison of the current verification (per test), and a new verification fails, the following logic will be applied:
Auto Refresh | Mdi | Behavior |
---|---|---|
true | true | No action. Current instance will refresh |
true | false | No action. Current instance will refresh |
false | true | Open new instance. Previous instance must be manually closed |
false | false | Kill current and open new instance |
This allows, in most cases, for no manual closing of the tool to be required.
By default a maximum of 5 tool instances will be launched. This prevents a change that breaks many test from causing too much load on a machine.
This value can be changed:
Setting the DiffEngine_MaxInstances
environment variable to the number of instances to launch.
This value can also be set using the DiffEngineTray options dialog.
DiffRunner.MaxInstancesToLaunch(10);
By default, when a diff is opened, the temp file is on the left and the target file is on the right.
This value can be changed by setting the DiffEngine_TargetOnLeft
environment variable to true
.
This value can also be set using the DiffEngineTray options dialog.
If a tool is running for the comparison of the current verification (per test), and a new verification passes, the following logic will be applied:
Mdi | Behavior |
---|---|
true | No action taken. Previous instance must be manually closed |
false | Kill current instance |
This allows, in most cases, for no manual closing of the tool to be required.
Resharper has a feature Check for orphaned processes spawned by test runner.
By default, ReSharper maintains a list of all processes that are launched by the executed tests. If some of theses processes do not exit after the test execution is over, ReSharper will suggest you to terminate the process. If your setup requires some processes started by the tests to continue running, you can clear this checkbox to avoid unnecessary notifications.
Since this project launches diff tools, it will trigger this feature an a dialog will show:
All unit tests are finished, but child processes spawned by the test runner process are still running. Terminate child process?
As such this feature needs to be disabled:
ReSharper | Options | Tools | Unit Testing | Test Runner
Non-MDI tools are preferred since it allows DiffEngineTray to track and close diffs.
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Supported binaries: mp3, xls, xlsm, xlsx, doc, docm, docx, dot, dotm, dotx, pdf, bmp, gif, ico, jpg, jpeg, png, tif, tiff, rtf
-
Example target on left arguments:
/solo /rightreadonly "targetFile" "tempFile"
-
Example target on right arguments:
/solo /leftreadonly "tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Beyond Compare *\BCompare.exe
%ProgramW6432%\Beyond Compare *\BCompare.exe
%ProgramFiles(x86)%\Beyond Compare *\BCompare.exe
%UserProfile%\scoop\apps\beyondcompare\current\BCompare.exe
- Example target on left arguments:
-solo -rightreadonly "targetFile" "tempFile"
- Example target on right arguments:
-solo -leftreadonly "tempFile" "targetFile"
- Scanned path:
/Applications/Beyond Compare.app/Contents/MacOS/bcomp
- Example target on left arguments:
-solo -rightreadonly "targetFile" "tempFile"
- Example target on right arguments:
-solo -leftreadonly "tempFile" "targetFile"
- Scanned path:
/usr/lib/beyondcompare/bcomp
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Supported binaries: jpg, jp2, j2k, png, gif, psd, tif, bmp, pct, pict, pic, ico, ppm, pgm, pbm, pnm, zip, jar, ear, tar, tgz, tbz2, gz, bz2, doc, docx, xls, xlsx, ppt, pdf, rtf, html, htm
- Example target on left arguments:
-mi "targetFile" "tempFile"
- Example target on right arguments:
-mi "tempFile" "targetFile"
- Scanned path:
C:\Program Files\Deltopia\DeltaWalker\DeltaWalker.exe
- Example target on left arguments:
-mi "targetFile" "tempFile"
- Example target on right arguments:
-mi "tempFile" "targetFile"
- Scanned path:
/Applications/DeltaWalker.app/Contents/MacOS/DeltaWalker
- Cost: Free with option to donate
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Disable single instance:
\ Preferences \ Tabs \ uncheck
Use single instance and open new diffs in tabs
.
-
Example target on left arguments:
"targetFile" "tempFile"
-
Example target on right arguments:
"tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Diffinity\Diffinity.exe
%ProgramW6432%\Diffinity\Diffinity.exe
%ProgramFiles(x86)%\Diffinity\Diffinity.exe
%UserProfile%\scoop\apps\diffinity\current\Diffinity.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
-
Example target on left arguments:
--nosplash "targetFile" "tempFile"
-
Example target on right arguments:
--nosplash "tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\SourceGear\Common\DiffMerge\sgdm.exe
%ProgramW6432%\SourceGear\Common\DiffMerge\sgdm.exe
%ProgramFiles(x86)%\SourceGear\Common\DiffMerge\sgdm.exe
- Example target on left arguments:
--nosplash "targetFile" "tempFile"
- Example target on right arguments:
--nosplash "tempFile" "targetFile"
- Scanned path:
/Applications/DiffMerge.app/Contents/MacOS/DiffMerge
- Example target on left arguments:
--nosplash "targetFile" "tempFile"
- Example target on right arguments:
--nosplash "tempFile" "targetFile"
- Scanned path:
/usr/bin/diffmerge
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Command line reference
/nh
: do not add files or directories to comparison history/diffonly
: diff-only merge mode: hide the merge pane
-
Example target on left arguments:
"targetFile" "tempFile" /nh /diffonly /dn1:targetFile /dn2:tempFile
-
Example target on right arguments:
"tempFile" "targetFile" /nh /diffonly /dn1:tempFile /dn2:targetFile
-
Scanned paths:
%ProgramFiles%\ExamDiff Pro\ExamDiff.exe
%ProgramW6432%\ExamDiff Pro\ExamDiff.exe
%ProgramFiles(x86)%\ExamDiff Pro\ExamDiff.exe
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Supported binaries: bmp, gif, jpeg, jpg, png, wbmp
- Command line reference
- Image Diff Tool
-ge1
: Forbid first file view Editing-ge2
: Forbid second file view Editing
-
Example target on left arguments:
"targetFile" "tempFile" -ge2
-
Example target on right arguments:
"tempFile" "targetFile" -ge1
-
Scanned paths:
%ProgramFiles%\Guiffy\guiffy.exe
%ProgramW6432%\Guiffy\guiffy.exe
%ProgramFiles(x86)%\Guiffy\guiffy.exe
- Example target on left arguments:
"targetFile" "tempFile" -ge2
- Example target on right arguments:
"tempFile" "targetFile" -ge1
- Scanned path:
/Applications/Guiffy/guiffyCL.command
- Cost: Paid
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Supported binaries: bmp, gif, ico, jpg, jpeg, png, tiff, tif
- Example target on left arguments:
"targetFile" "tempFile"
- Example target on right arguments:
"tempFile" "targetFile"
- Scanned path:
/usr/local/bin/ksdiff
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
--cs CreateBakFiles=0
to not save a.orig
file when merging
-
Example target on left arguments:
"targetFile" "tempFile" --cs CreateBakFiles=0
-
Example target on right arguments:
"tempFile" "targetFile" --cs CreateBakFiles=0
-
Scanned paths:
%ProgramFiles%\KDiff3\kdiff3.exe
%ProgramW6432%\KDiff3\kdiff3.exe
%ProgramFiles(x86)%\KDiff3\kdiff3.exe
- Example target on left arguments:
"targetFile" "tempFile" --cs CreateBakFiles=0
- Example target on right arguments:
"tempFile" "targetFile" --cs CreateBakFiles=0
- Scanned path:
/Applications/kdiff3.app/Contents/MacOS/kdiff3
- Cost: Free with option to sponsor
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Assumes installed through Chocolatey https://chocolatey.org/packages/neovim/
- Example target on left arguments:
-d "targetFile" "tempFile"
- Example target on right arguments:
-d "tempFile" "targetFile"
- Scanned path:
%ChocolateyToolsLocation%\neovim\*\nvim.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: False
- Supported binaries: bmp, gif, jpg, jpeg, png, pbm, pgm, ppm, tif, tiff, xbm, xpm
-
Example target on left arguments:
"targetFile" "tempFile"
-
Example target on right arguments:
"tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Perforce\p4merge.exe
%ProgramW6432%\Perforce\p4merge.exe
%ProgramFiles(x86)%\Perforce\p4merge.exe
- Example target on left arguments:
"targetFile" "tempFile"
- Example target on right arguments:
"tempFile" "targetFile"
- Scanned path:
/Applications/p4merge.app/Contents/MacOS/p4merge
- Example target on left arguments:
"targetFile" "tempFile"
- Example target on right arguments:
"tempFile" "targetFile"
- Scanned path:
/usr/bin/p4merge
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
-
Example target on left arguments:
-C utf8-bom "tempFile" "targetFile" "targetFile" "targetFile"
-
Example target on right arguments:
-C utf8-bom "targetFile" "tempFile" "targetFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Perforce\p4merge.exe
%ProgramW6432%\Perforce\p4merge.exe
%ProgramFiles(x86)%\Perforce\p4merge.exe
- Example target on left arguments:
-C utf8-bom "tempFile" "targetFile" "targetFile" "targetFile"
- Example target on right arguments:
-C utf8-bom "targetFile" "tempFile" "targetFile" "targetFile"
- Scanned path:
/Applications/p4merge.app/Contents/MacOS/p4merge
- Example target on left arguments:
-C utf8-bom "tempFile" "targetFile" "targetFile" "targetFile"
- Example target on right arguments:
-C utf8-bom "targetFile" "tempFile" "targetFile" "targetFile"
- Scanned path:
/usr/bin/p4merge
- Cost: Paid with free option for OSS
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
-
Example target on left arguments:
diff "targetFile" "tempFile"
-
Example target on right arguments:
diff "tempFile" "targetFile"
-
Scanned paths:
%LOCALAPPDATA%\JetBrains\Installations\Rider*\bin\rider64.exe
%ProgramFiles%\JetBrains\JetBrains Rider *\bin\rider64.exe
%ProgramW6432%\JetBrains\JetBrains Rider *\bin\rider64.exe
%ProgramFiles(x86)%\JetBrains\JetBrains Rider *\bin\rider64.exe
%JetBrains Rider%\rider64.exe
%LOCALAPPDATA%\JetBrains\Toolbox\apps\Rider\*\*\bin\rider64.exe
%UserProfile%\scoop\apps\rider\current\IDE\bin\rider64.exe
-
Example target on left arguments:
diff "targetFile" "tempFile"
-
Example target on right arguments:
diff "tempFile" "targetFile"
-
Scanned paths:
%HOME%/Library/Application Support/JetBrains/Toolbox/apps/Rider/*/*/Rider EAP.app/Contents/MacOS/rider
%HOME%/Library/Application Support/JetBrains/Toolbox/apps/Rider/*/*/Rider.app/Contents/MacOS/rider
/Applications/Rider EAP.app/Contents/MacOS/rider
/Applications/Rider.app/Contents/MacOS/rider
-
Example target on left arguments:
diff "targetFile" "tempFile"
-
Example target on right arguments:
diff "tempFile" "targetFile"
-
Scanned paths:
%HOME%/.local/share/JetBrains/Toolbox/apps/Rider/*/*/bin/rider.sh
/opt/jetbrains/rider/bin/rider.sh
/usr/share/rider/bin/rider.sh
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
- Example target on left arguments:
"targetFile" "tempFile"
- Example target on right arguments:
"tempFile" "targetFile"
- Scanned path:
/Applications/TkDiff.app/Contents/MacOS/tkdiff
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
-
Example target on left arguments:
"targetFile" "tempFile"
-
Example target on right arguments:
"tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\TortoiseGit\bin\TortoiseGitMerge.exe
%ProgramW6432%\TortoiseGit\bin\TortoiseGitMerge.exe
%ProgramFiles(x86)%\TortoiseGit\bin\TortoiseGitMerge.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: False
- Supported binaries: bmp, gif, ico, jpg, jpeg, png, tif, tiff
-
Example target on left arguments:
/left:"targetFile" /right:"tempFile"
-
Example target on right arguments:
/left:"tempFile" /right:"targetFile"
-
Scanned paths:
%ProgramFiles%\TortoiseSVN\bin\TortoiseIDiff.exe
%ProgramW6432%\TortoiseSVN\bin\TortoiseIDiff.exe
%ProgramFiles(x86)%\TortoiseSVN\bin\TortoiseIDiff.exe
- Cost: Free
- Is MDI: False
- Supports auto-refresh: False
- Supports text files: True
-
Example target on left arguments:
"targetFile" "tempFile"
-
Example target on right arguments:
"tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\TortoiseSVN\bin\TortoiseMerge.exe
%ProgramW6432%\TortoiseSVN\bin\TortoiseMerge.exe
%ProgramFiles(x86)%\TortoiseSVN\bin\TortoiseMerge.exe
- Cost: Free with option to donate
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
-
Example target on left arguments:
-d "targetFile" "tempFile" -c "setl autoread | setl nobackup | set noswapfile"
-
Example target on right arguments:
-d "tempFile" "targetFile" -c "setl autoread | setl nobackup | set noswapfile"
-
Scanned paths:
%ProgramFiles%\Vim\*\vim.exe
%ProgramW6432%\Vim\*\vim.exe
%ProgramFiles(x86)%\Vim\*\vim.exe
- Example target on left arguments:
-d "targetFile" "tempFile" -c "setl autoread | setl nobackup | set noswapfile"
- Example target on right arguments:
-d "tempFile" "targetFile" -c "setl autoread | setl nobackup | set noswapfile"
- Scanned path:
/Applications/MacVim.app/Contents/bin/mvim
- Cost: Free with option to donate
- Is MDI: False
- Supports auto-refresh: True
- Supports text files: True
- Command line reference.
/u
Prevents WinMerge from adding paths to the Most Recently Used (MRU) list./wl
Opens the left side as read-only./dl
and/dr
Specifies file descriptions in the title bar./e
Enables close with a single Esc key press.
-
Example target on left arguments:
/u /wl /e "targetFile" "tempFile" /dl "targetFile" /dr "tempFile"
-
Example target on right arguments:
/u /wl /e "tempFile" "targetFile" /dl "tempFile" /dr "targetFile"
-
Scanned paths:
%ProgramFiles%\WinMerge\WinMergeU.exe
%ProgramW6432%\WinMerge\WinMergeU.exe
%ProgramFiles(x86)%\WinMerge\WinMergeU.exe
- Cost: Paid
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
- Supported binaries: bmp, dib, emf, gif, jif, j2c, j2k, jp2, jpc, jpeg, jpg, jpx, pbm, pcx, pgm, png, ppm, ras, tif, tiff, tga, wmf
- Supported image files
- Windows command line usage
- MacOS command line usage
- Installing MacOS command line
-
Example target on left arguments:
/nowait "targetFile" "tempFile"
-
Example target on right arguments:
/nowait "tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Araxis\Araxis Merge\Compare.exe
%ProgramW6432%\Araxis\Araxis Merge\Compare.exe
%ProgramFiles(x86)%\Araxis\Araxis Merge\Compare.exe
- Example target on left arguments:
-nowait "targetFile" "tempFile"
- Example target on right arguments:
-nowait "tempFile" "targetFile"
- Scanned path:
/Applications/Araxis Merge.app/Contents/Utilities/compare
- Cost: Paid
- Is MDI: True
- Supports auto-refresh: False
- Supports text files: True
-
Example target on left arguments:
"targetFile" "tempFile"
-
Example target on right arguments:
"tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Devart\Code Compare\CodeCompare.exe
%ProgramW6432%\Devart\Code Compare\CodeCompare.exe
%ProgramFiles(x86)%\Devart\Code Compare\CodeCompare.exe
- Cost: Free
- Is MDI: True
- Supports auto-refresh: False
- Supports text files: True
While Meld is not MDI, it is treated as MDI since it uses a single shared process to managing multiple windows. As such it is not possible to close a Meld merge process for a specific diff. Vote for this feature
-
Example target on left arguments:
"targetFile" "tempFile"
-
Example target on right arguments:
"tempFile" "targetFile"
-
Scanned paths:
%LOCALAPPDATA%\Programs\Meld\meld.exe
%ProgramFiles%\Meld\meld.exe
%ProgramW6432%\Meld\meld.exe
%ProgramFiles(x86)%\Meld\meld.exe
- Example target on left arguments:
"targetFile" "tempFile"
- Example target on right arguments:
"tempFile" "targetFile"
- Scanned path:
/Applications/meld.app/Contents/MacOS/meld
- Example target on left arguments:
"targetFile" "tempFile"
- Example target on right arguments:
"tempFile" "targetFile"
- Scanned path:
/usr/bin/meld
- Cost: Paid
- Is MDI: True
- Supports auto-refresh: False
- Supports text files: True
While SublimeMerge is not MDI, it is treated as MDI since it uses a single shared process to managing multiple windows. As such it is not possible to close a Sublime merge process for a specific diff. Vote for this feature
-
Example target on left arguments:
mergetool "targetFile" "tempFile"
-
Example target on right arguments:
mergetool "tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Sublime Merge\smerge.exe
%ProgramW6432%\Sublime Merge\smerge.exe
%ProgramFiles(x86)%\Sublime Merge\smerge.exe
- Example target on left arguments:
mergetool "targetFile" "tempFile"
- Example target on right arguments:
mergetool "tempFile" "targetFile"
- Scanned path:
/Applications/smerge.app/Contents/MacOS/smerge
- Example target on left arguments:
mergetool "targetFile" "tempFile"
- Example target on right arguments:
mergetool "tempFile" "targetFile"
- Scanned path:
/usr/bin/smerge
- Cost: Paid and free options
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
-
Example target on left arguments:
/diff "targetFile" "tempFile" "targetFile" "tempFile"
-
Example target on right arguments:
/diff "tempFile" "targetFile" "tempFile" "targetFile"
-
Scanned paths:
%ProgramFiles%\Microsoft Visual Studio\2022\Preview\Common7\IDE\devenv.exe
%ProgramW6432%\Microsoft Visual Studio\2022\Preview\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2022\Preview\Common7\IDE\devenv.exe
%ProgramFiles%\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe
%ProgramW6432%\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2022\Community\Common7\IDE\devenv.exe
%ProgramFiles%\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe
%ProgramW6432%\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2022\Professional\Common7\IDE\devenv.exe
%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe
%ProgramW6432%\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe
%ProgramFiles(x86)%\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\devenv.exe
- Cost: Free
- Is MDI: True
- Supports auto-refresh: True
- Supports text files: True
-
Example target on left arguments:
--diff "targetFile" "tempFile"
-
Example target on right arguments:
--diff "tempFile" "targetFile"
-
Scanned paths:
%LocalAppData%\Programs\Microsoft VS Code\code.exe
%ProgramFiles%\Microsoft VS Code\bin\code.exe
%ProgramW6432%\Microsoft VS Code\bin\code.exe
%ProgramFiles(x86)%\Microsoft VS Code\bin\code.exe
%ProgramFiles%\Microsoft VS Code\code.exe
%ProgramW6432%\Microsoft VS Code\code.exe
%ProgramFiles(x86)%\Microsoft VS Code\code.exe
%UserProfile%\scoop\apps\vscode\current\bin\code.cmd
%UserProfile%\scoop\apps\vscode\current\code.exe
- Example target on left arguments:
--diff "targetFile" "tempFile"
- Example target on right arguments:
--diff "tempFile" "targetFile"
- Scanned path:
/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code
-
Example target on left arguments:
--diff "targetFile" "tempFile"
-
Example target on right arguments:
--diff "tempFile" "targetFile"
-
Scanned paths:
/usr/local/bin/code
/usr/bin/code