I've been a WinMerge user for years. Despite that work on the 2.x branch seemed to stop after the 2.14.0 release in 2013, I kept using it since it did all the things I needed it to do. However, there were a few annoying issues with certain compare scenarioshowever, so when all of sudden version 2.16.0 showed up, it was a welcome site.
The 2.16.0 version brought with it several new features, but I quickly noticed Visual Studio no longer opened it correctly when wanted to compare files. It turned out the addition of the 3-way compare/merge had changed the command line parameters. Reading up on WinMerge's Command Line interface and what Visual Studio can pass into a third party compare/merge tool, I got it working again.
Using the 32-bit version WinMergeU.exe is found
C:\Program Files (x86)\WinMerge\WinMergeU.exe
For Compare the Arguments should be
/e /u /wl /wr /dl %6 /dr %7 %1 %2
and for Merge they should be
/e /u /wl /dl %6 /dr %7 %1 %2 /o %4
Setting up External Tools for Compare and Merge in Visual Studio
So if the above looks great, but you have no idea on how to set it up, just open Visual Studio, click the Tools menu and select Options
Then under Source Control, select Visual Studio Team Foundation Server and click Configure User Tools...
After that you can click Add and configure Compare and Merge described above.
Thanks for the interesting article. Some disadvantages I think of WinMerge when resolving merge conflicts, is that it does not indicate which changes are conflicting. Also you cannot skip to the next conflicting change, you can only go to the next change. So if there are many changes between source and target, and only one is conflicting, it is very difficult to see which one it is.
One question: in WinMerge, how do you resolve a merge conflict? The built-in Visual Studio merge tool has commands for accepting the source or target version of a conflicting change (or both), or you can enter your own version into the bottom pane. E.g., I had a merge conflict where there were 3 differences between source and target, and the first difference was conflicting. In fact I just wanted the target version of the file, and didn’t need any of the changes from the source. So I exited WinMerge without changing anything. VS saw this as abandoning the conflict resolution. The VS merge tool has much better integration with the merge process, but it has a critical weakness in not being able to ignore white space differences. With WinMerge you can ignore all white space differences, but it does integrate so well with the VS merge conflict resolution.