git-gui: Improve diff --cc viewing for unmerged files.
authorShawn O. Pearce <spearce@spearce.org>
Sun, 21 Jan 2007 18:12:02 +0000 (13:12 -0500)
committerShawn O. Pearce <spearce@spearce.org>
Mon, 22 Jan 2007 03:47:54 +0000 (22:47 -0500)
commitfec4a78590229aab648e37195a071e3aae02bfe0
tree9acdf2f3301f47bd584739516c256bed6b4fd0e6
parent3b4db3c1a3b9be66b46d8bd64560ee3f14f1084d
git-gui: Improve diff --cc viewing for unmerged files.

Now that we are using 'git diff' to display unmerged working directory
files we are getting 'diff --cc' output rather than 'diff --combined'
output.  Further the markers in the first two columns actually make
sense here, we shouldn't attempt to rewrite them to something else.

I've added 'diff --cc *' to the skip list in our diff viewer, as that
particular line is not very interesting to display.

I've completely refactored how we perform detection of the state of a
line during diff parsing; we now report an error message if we don't
understand the particular state of any given line.  This way we know
if we aren't tagging something we maybe should have tagged in the UI.

I've also added special display of the standard conflict hunk markers
(<<<<<<<, =======, >>>>>>>).  These are formatted without a patch op
as the patch op is always '+' or '++' (meaning the line has been added
relative to the committed state) and are displayed in orange bold text,
sort of like the @@ or @@@ marker line is at the start of each hunk.

In a 3 way merge diff hunks which came from our HEAD are shown with a
azure2 background, and hunks which came from the incoming MERGE_HEAD
are displayed with a 'light goldenrod yellow' background.  This makes
the two different hunks clearly visible within the file.  Hunks which
are ++ or -- (added or deleted relative to both parents) are shown
without any background at all.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
git-gui.sh