git-gui: rework handling of diff header
authorBert Wesarg <bert.wesarg@googlemail.com>
Thu, 9 Dec 2010 20:47:52 +0000 (21:47 +0100)
committerPat Thoyts <patthoyts@users.sourceforge.net>
Fri, 28 Jan 2011 09:01:17 +0000 (09:01 +0000)
commitc976bbff3c3e46e700adbdc14def8c9432fc925c
tree31d974690f2ce5282e467f0c56188ab14bf7b446
parent7587f4d32f7479a9fa9ae1767708597702a0be5f
git-gui: rework handling of diff header

The fix in ca53c3f (Fix diff parsing for lines starting with "--" or "++",
2008-09-05) got a bug report from Johannes Sixt, that new files in the
index now looks like:

  new file mode 100644
  --- /dev/null
  +++ b/foo
  @@ -0,0 +1 @@
  +foo

The introduced problem was that the 'in-diff-header'-flag was unconditially
disabled. Now it is only disabled when a hunk line is detected. And also
re-enabled when we encounter a new diff header.

The second part solves also the issue reported by me for diffs with file
type changes (i.e. the ''error: Unhandled 2 way diff marker: {d}"', which
comes from the second 'diff --git' line).

Reported-by: Johannes Sixt <j.sixt@viscovery.net>
Reported-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Signed-off-by: Pat Thoyts <patthoyts@users.sourceforge.net>
lib/diff.tcl