format-patch: allow --interdiff to apply to a lone-patch
commitee6cbf712edcbd1dc14993ab2452fbe882dc524a
authorEric Sunshine <sunshine@sunshineco.com>
Sun, 22 Jul 2018 09:57:09 +0000 (22 05:57 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 23 Jul 2018 19:50:06 +0000 (23 12:50 -0700)
treec339d324037e1a3de90b91385b4c8a7fad1cfde7
parent3fcc7a23a0b76bdac07b605a6afd6084ac543821
format-patch: allow --interdiff to apply to a lone-patch

When submitting a revised version of a patch or series, it can be
helpful (to reviewers) to include a summary of changes since the
previous attempt in the form of an interdiff, typically in the cover
letter. However, it is occasionally useful, despite making for a noisy
read, to insert an interdiff into the commentary section of the lone
patch of a 1-patch series.

Therefore, extend "git format-patch --interdiff=<prev>" to insert an
interdiff into the commentary section of a lone patch rather than
requiring a cover letter. The interdiff is indented to avoid confusing
git-am and human readers into considering it part of the patch proper.

Implementation note: Generating an interdiff for insertion into the
commentary section of a patch which itself is currently being generated
requires invoking the diffing machinery recursively. However, the
machinery does not (presently) support this since it uses global state.
Consequently, we need to take care to stash away the state of the
in-progress operation while generating the interdiff, and restore it
after.

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/git-format-patch.txt
builtin/log.c
log-tree.c
t/t4014-format-patch.sh