RoaringDiff - Native Mac diff(1) Front-end
Hello! I wrote RoaringDiff waaaay back in 2008 and it was a fun project. I'm considering dusting it off and updating it for the modern era. I have a new software company called Bit Lasso and I've been building search and "diff" tools for PowerPoint and Keynote slides. Check it out!
Would you be interested in an updated GUI diff with these xxdiff-like features for the Mac? Drop me a line at mitch@bitlasso.com
Download 18-Oct-2008 build (sparse disk image, 102 KB)
Apple moved /usr/bin/diff to /Applications/Xcode.app/Contents/Developer/usr/bin/diff -- You'll need to make a symlink for RoaringDiff to work. I no longer use RoaringDiff these days, but I've left it up here because there are people who do.
RoaringDiff is open source. This is beta quality code; I'm using it, but there's not enough miles on it yet. Please share bug reports with me. mitch@bitlasso.com
Features
- Additions, deletions, and changes to the file are shown in different colors.
- The vertical scrollbar provides a "heads-up" preview of the differences, making easy to spot the magnitude and the density of the differences.
- A handy "Differences" menu enables quick jumping to any change.
- At the bottom of the screen, a horiztonal comparison view is provided that assists in visualizing subtle changes to individual lines.
RoaringDiff is...
- A native Mac OS X application (Universal Binary for PowerPC and Intel).
- Controllable from the command line and suitable for p4 diff or svn diff operations from the Terminal.
- A 1.0 release, which means missing "obvious" features and some bugs. :-)
- Not a "diff3" replacement.
- Not a merge tool.
Using with 'svn' command line
You can point svn to RoaringDiff manually every time you run svn diff:$ svn diff --diff-cmd /Applications/RoaringDiff.app/Contents/MacOS/RoaringDiff
This becomes tedious quickly. If you plan to use RoaringDiff for most of your diffing, edit ~/.subversion/config and change diff-cmd in that file:### Set diff-cmd to the absolute path of your 'diff' program. ### This will override the compile-time default, which is to use ### Subversion's internal diff implementation. # diff-cmd = diff_program (diff, gdiff, etc.) diff-cmd = /Applications/RoaringDiff.app/Contents/MacOS/RoaringDiff
To use the regular GNU diff from time to time when diff-cmd is set, you can run:$ svn diff --diff-cmd diff
Using with 'p4' command line
For use with Perforce, just set P4DIFF to the RoaringDiff executable. You can do this in your shell configuration (~/.profile for bash users).export P4DIFF=/Applications/RoaringDiff.app/Contents/MacOS/RoaringDiff
To use the regular GNU diff from time to time when P4DIFF is set, bash users can run:$ P4DIFF=diff p4 diff
Known Bugs/RFEs
- Port QuickDraw rendering code to Quartz (150).
- Closing the diff window should quit the app if the app was started from the command line (152).
- Extremely large files suffer from poor performance and possibly other problems (149).
- Reversing the diff direction does not update the "Differences" menu (145).
- Add X11-style geometry flags to the command line options to control what screen(s) to show the window on, and the dimensions of the window (147).
- The pop-up menu list of recently viewed files will include temporary files from p4 or svn; these should be removed or flagged as missing from the filesystem (154).
- Remove the dependency on GNU diff (156).
- The maximum line width is 262,144 characters (155).
- There are some minor issues with disabling diff features (e.g., do not compare whitespace) and the rendering of the right file. The right file is rendered as a set of changes to the left, so if changes are ignored, they are not shown on the right (157).
Feedback
I mostly wrote RoaringDiff because it is a tool that I want to use. If you find it useful, I'd love to hear how you're using it. My main pet peeve was the lack of a GUI differ than has "proper" command-line control for using with Perforce and Subversion.I wanted something like xxdiff on the Mac (but xxdiff has some strangeness that bugs me, too). opendiff(1) drives me crazy--I want "synchronous diffing" and control over the colors and geometry.
Send me mail: mitch@biscade.com.