Subject: Re: [PATCH] Don't add To: recipients to the Cc: header

From: Junio C Hamano <[email-masked]>
Date: Tue, 20 Nov 2007 12:21:24 -0800

Sergei Organov <[email-masked]> writes:

> Junio C Hamano <[email-masked]> writes:
> [...]
>> Oops, forgot to say "no need to resend".  I asked only because I
>> wanted an independent datapoint for Emacs diff mode breakage.
>
> I bet I can damage any patch using any editor ;)
>
> More interesting is what version of Emacs it was?

To be fair and honest, I do not think there is a simple fix for
this, although it probably is possible to fix it.

What is causing the "breakage" is the fact that format-patch
output ends with the signature delimiter line "^-- $" that
immediately follows the patch text.  The number of preimage
lines recorded in the hunk header of course does not initially
count it, but you are asking the diff editing mode to help you
edit the patch.

In diff editing mode, you can not only edit the contents of
postimage lines, but also add and delete the preimage and
postimage lines, and the diff editimg mode recounts the lines
and adjusts the number of lines recorded in the hunk header when
you do it.  It is very handy if it worked reliably (and often
it does).

But if you edit the last hunk of the format-patch output, unless
the editor very carefully keeps track of what you edited and
what was in the original, it is understandable that it would
mistake the signature delimiter line as the last preimage line
that is "^- $", and ends up miscounting the length of the hunk.

The signature delimiter was there from the beginning in the
patch file, but outside of the hunk in question.  We could argue
that it is a bug to mistake that as a preimage line added by the
user (after all the editor knows what was modified and what was
from the beginning), but it still is understandable.