When comparing P4Merge vs difftastic, the Slant community recommends P4Merge for most people. In the question“What are the best diff tools for Git?” P4Merge is ranked 2nd while difftastic is ranked 18th. The most important reason people chose P4Merge is:
P4Merge is free of charge.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Free
P4Merge is free of charge.
Pro 3 way merge support
P4Merge presents merge information in 4 panes - BASE, LOCAL, REMOTE and MERGE_RESULT.
Pro Detects minimal changes without having a common ancestor
After a merge sometimes you have conflicts. You can resolve them by using a merge tool. You can run git mergetool --tool-help
to get more details about what tools are supported.
You will get an output like the followinggit mergetool --tool=<tool>
may be set to one of the following:
p4merge
tortoisemerge
vimdiff
vimdiff2
vimdiff3
The following tools are valid, but not currently available:
araxis
bc
bc3
codecompare
deltawalker
diffmerge
diffuse
ecmerge
emerge
gvimdiff
gvimdiff2
gvimdiff3
kdiff3
meld
opendiff
tkdiff
winmerge
xxdiff
Some of the tools listed above only work in a windowed environment. If run in a terminal-only session, they will fail.
Pro Also has image diffing
For those who are working in both text based source code or files, as well as images, its nice to have the diff functionality of both present in the same product.
Pro Cross-platform with a good Mac port
P4Merge works on Windows, Linux and OS X.
Pro Can diff directories
Pro Syntactic diffing
Down to a character.
Pro Cross platform
Linux, Mac and Windows.
Pro Supports over 20 languages (and some other syntax)
c, c++, c#, java, python, go, javascript, json, rust, sql, html, css and more.
See here.
Pro Language autodetection
Pro Has a manual
Pro Supports other version control tools
Like Mercurial.
Pro Works with Magit
Pro MIT license
Pro Has syntax highlighting
That can be turned off.
Cons
Con Directory comparison is not supported
With P4Merge it's impossible to compare two different directories to find differences.
Con Can be confused with syntax at times
