(Note: See the new post for Visual Studio 2013 and 2015, and WinMerge2011.)
I use WinMerge for file compare and DiffMerge for merge operations in Visual Studio 2010 and 2012. Here are instructions on how to setup Visual Studio to use those tools.
- Go to Tools -> Options to bring up the Options dialog
- Go to Source Control -> Visual Studio Team Foundation
- Click on "Configure User Tools..."
Add a new entry for WinMerge:
- Extension: .*
- Operation: Compare
- Command: C:\Program Files (x86)\WinMerge\WinMergeU.exe
- Arguments: /e /x /wl /u /dl %6 /dr %7 %1 %2
Add a new entry for DiffMerge:
- Extension: .*
- Operation: Merge
- Command: C:\Program Files\SourceGear\Common\DiffMerge\sgdm.exe
- Arguments: /m /r=%4 /t1=%7 /t2=%8 /t3=%6 /c=%9 %2 %3 %1
WinMerge hasn't been updated in a while, but still very capable, and much better than the VS built-in tool prior to VS 2012.
DiffMerge offers three-pane comparison, which I can't live without when resolving merge conflicts.
I've been using above tools for many years now. Visual Studio 2012 includes improved built-in compare and merge tool, and that might make above not necessary, but I haven't used it much yet as of now.
It would be nice if these tools were a little bit more smarter, such as detecting code block moves -- like Eclipse Java Compare...