threads / discuss / 9941

Side-by-side diff and patch visualization

Subject: Side-by-side diff and patch visualization

## tl;dr

5 messages between Sep 19, 2007 and Sep 19, 2007.

replies: 4people: 4as markdown or json

Wincent Colaiuta· Sep 19, 2007, 11:40 UTC · lore

Does anybody know of any tools for doing side-by-side visualizations of diffs and patches which work well with Git?

By side-by-side I mean something like what's shown in this screen shot:
<http://wincent.com/images/side-by-side-diff.png>

For simple diffs there is little advantage here over a raw textual diff, but as patch complexity and size increase the side-by-side diff can sometimes prove itself to be more useful:

- totally flexible notion of context (you can scroll as far as you  
want in either direction)
- this flexibility comes with the same rapid movement between changes  
(ie. up/down cursor keys to jump between hunks no matter how far  
apart they are)
- for complex diffs, truly comprehending the nature of the changes  
may be easier in a side-by-side format
- as icing on cake, the implementation in the screenshot highlights  
the removed/added portions within each line

Now, that screenshot is actually of Apple's FileMerge app on Mac OS X and it would be fairly straightforward to write a dump wrapper script that either just interpreted the output of git-diff, or could be used in conjunction with GIT_EXTERNAL_DIFF, to feed files into opendiff two at a time, but that wouldn't allow you to easily visualize diffs which touch many paths.

So, can anyone recommend a tool which can do this kind of side-by- side visualization and plays nicely with Git? Experience with opendiff and git-mergetool has spoilt me here. For most cases I would continue to use vanilla git-diff (or gitk), but when I see a change that I'd like to visualize side-by-side I'd like to be able to use this alternative diff viewer (or can gitk already do side-by-side diffs and I just haven't seen how to turn them on?). Bonus points if I could not only view existing commits, but proposed commits too (ie. the ability to feed in a patch and see a side-by-side visualization of what the diff would look like if applied).

If nothing exists I will look at quickly hacking something together (most likely something that just reads the output of git-diff), but it will be just that, a quick hack.

Cheers, Wincent

Jeff King· Sep 19, 2007, 12:09 UTC · re: Wincent Colaiuta · lore

Re: Side-by-side diff and patch visualization

On Wed, Sep 19, 2007 at 01:40:17PM +0200, Wincent Colaiuta wrote:
> Does anybody know of any tools for doing side-by-side visualizations of 
> diffs and patches which work well with Git?
Have you tried kompare?
  git-diff HEAD~5 | kompare -
-Peff
Wincent Colaiuta· Sep 19, 2007, 12:36 UTC · re: Jeff King · lore

Re: Side-by-side diff and patch visualization

El 19/9/2007, a las 14:09, Jeff King escribió:
Show 11 quoted lines
> On Wed, Sep 19, 2007 at 01:40:17PM +0200, Wincent Colaiuta wrote:
>
>> Does anybody know of any tools for doing side-by-side  
>> visualizations of
>> diffs and patches which work well with Git?
>
> Have you tried kompare?
>
>   git-diff HEAD~5 | kompare -
>
> -Peff

Ah, didn't know about that one. From the look of it that is exactly the kind of extremely simple viewer that I was wanting.

Cheers, Wincent

Andy Parkins· Sep 19, 2007, 13:08 UTC · re: Jeff King · lore

Re: Side-by-side diff and patch visualization

On Wednesday 2007 September 19, Jeff King wrote:
> Have you tried kompare?
>
>   git-diff HEAD~5 | kompare -

You can also throw in the "--unified" switch to see the whole file, rather than just the bits that have changed (if that's what you like).

 git-diff --unified=9999999 HEAD~5 | kompare -
Andy
-- 
Dr Andy Parkins, M Eng (hons), MIET
andyparkins@gmail.com
David Kastrup· Sep 19, 2007, 12:23 UTC · re: Wincent Colaiuta · lore

Re: Side-by-side diff and patch visualization

Wincent Colaiuta <win@wincent.com> writes:
Show 5 quoted lines
> Does anybody know of any tools for doing side-by-side visualizations
> of diffs and patches which work well with Git?
>
> So, can anyone recommend a tool which can do this kind of side-by- 
> side visualization and plays nicely with Git?

I use M-x ediff-revision RET in Emacs for this. There is also M-x smerge-ediff RET for resolving a file with merge conflict markers, and M-x ediff-merge-revisions-with-ancestor RET.

The side-by-side layout is chosen by typing | into the control window for the merge.

Looking at a patch in respect of two versions can be done with M-x ediff-patch-file RET.

-- 
David Kastrup

← back to recent threads