I've been using Subversion for a while now. I love it. And the feature I use the most is diff. But sometimes it is really frustrating when your comparison windows is filled with changes like: block inserted here, block deleted here. Just because you moved some methods around in your last refactoring session.

All the tools I've see (TortoiseSVN-Compare, KDiff3, Eclipse-Compare, WinMerge) are nice but they aren't as good as I'd like them to be. What I'm missing the most is the ability to detect block movement. And it would be nice if the tool could display multiple revisions of a file in a nice side by side view.

Which tool do you use?

+1  A: 

The two I've used and like are Araxis Merge, and Beyond Compare.

+3  A: 

It's hard to beat Araxis Merge.

Ben Hoffstein
Maybe, but Beyond Compare does it! ;-)
Johann Gerell
+17  A: 

I've been very happy with Beyond Compare.

Grr, you missed the bold text.
+1  A: 

Beyond Compare and KDiff3

Iulian Şerbănoiu
+2  A: 

Beyond Compare. Since version 3 it's available for Linux, too!

+2  A: 

I am a big fan of KDiff3

Multi-platform, comparison, merging, and much more. Still none of the "block movement" though.

Perforce's P4Diff/P4Merge tools are rather well-made too.

Kris Kumler
+10  A: 

WinMerge gets it done for me

+3  A: 

On Linux, meld.

Henrik Warne

I use WinMerge as well, does exactly what I need it to do.

Chris Tybur
+1  A: 

I've been using ExamDiff Pro for ever. I've never felt the need to look for another one. Compares by line, by word, by character, compares directories, then compares the file pairs if needed ... the list goes on. Oh, and it's really ease to update either file of the comparison.

+7  A: 

In WinMerge, check off "Enable moved block detection" under options|compare.

+1  A: 

I'll throw in another vote for Araxis Merge. It works well with Perforce.

Harold Ekstrom
+5  A: 

This was discussed before in Best Diff Tool

I have used WinMerge, Beyond Compare & Araxis Merge.

Ofcourse you can configure tortoise to use any of the above to show diff.

In my opinion, Araxis Merge is the best. Especially the reporting options are very handy for both for integration [delta releases] and management reporting!!

Most of the answers on that other question (and on this one, because people can't read…) miss the relevant feature: detecting block movement.
+2  A: 

The DiffMerge works fine for me.



Beyond Compare has been solid for me, but then so has TortoiseSVN.


I used to like Araxis Merge a lot.

Now I use WinMerge because I'm el cheapo.


I love WinMerge but the subversion one is also useful.

Frank V
+1  A: 

For me, the way the tool is integrated into the IDE or the file manager you use, is more important than the quality of the tool itself. Most file compare tools do descent job. What is important for me is how easy it is to launch the tool loaded with the files you want to compare.

When working on code I use Tortoise-Merge which I launch directly from Visual Studio + VisualSVN.

Outside the IDE I use Total Commander for file management, and I really like the way the file compare tool that comes with it is integrated. I can't really describe it but it is really cool, intuitive and fast.


Compare It from It's so cool, I almost want to pay for it again every time it saves my butt.


+1 for beyond compare

Christo Fur
+1  A: 

I have tested most of the most popular ones WinMerge, Beyond Compare, ARaxis Merge, kDiff.

All failed to detect two similar blocks in different locations.

So the answer is that at text/text comparison they are all mostly garbage(except Araxis maybe). And the question should be: Which is the less worst file comparison program?

+1  A: 

Diffuse - it actually does detect moved blocks properly, unlike many others (tried BC, WinMerge, P4Merge, ExamDiff Pro) What it lacks though, is customizability and BC-like option for ignoring unimportant changes.

+1  A: 

I use Kompare for compare and merge and ... that is application for Linux and release in KDE4. see this


Take a look at the new Xdiff in Plastic SCM. It is the first diff tool able to detect code fragments that have been moved inside a file, even after being modified too.