git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: [PATCH] format-patch: use default diff format even with patch options
Date: Sun, 24 Aug 2008 22:10:29 -0400	[thread overview]
Message-ID: <20080825021029.GA28355@coredump.intra.peff.net> (raw)
In-Reply-To: <20080825013837.GA17201@coredump.intra.peff.net>

On Sun, Aug 24, 2008 at 09:38:37PM -0400, Jeff King wrote:

> This was generated with -U5 to make the first hunk easier to read.

And while doing that, I detected another bug. Or maybe a feature,
depending on your perspective.

-- >8 --
format-patch: use default diff format even with patch options

Previously, running "git format-patch -U5" would cause the
low-level diff machinery to change the diff output format
from "not specified" to "patch". This meant that
format-patch thought we explicitly specified a diff output
format, and would not use the default format. The resulting
message lacked both the diffstat and the summary, as well as
the separating "---".

Now format-patch explicitly checks for this condition and
uses the default. That means that "git format-patch -p" will
now have the "-p" ignored.

Signed-off-by: Jeff King <peff@peff.net>
---
Maybe this is intentional, and that by asking for "-U" I am explicitly
saying "I really want the patch format, not the default." But I think
this more reasonably maps to what the user expects.

I am a little uncomfortable hurting anyone who thought that
"format-patch -p" was a good idea. OTOH:

  1. I have to question why they were using format-patch in the first
     place. Probably git-log --pretty=email would be a better fit.

  2. Their mails were already broken, since the presence of the diffstat
     is what triggers the "---" divider.

 builtin-log.c           |    3 ++-
 t/t4014-format-patch.sh |   25 +++++++++++++++++++++++++
 2 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/builtin-log.c b/builtin-log.c
index 9204ffd..1d3c5cb 100644
--- a/builtin-log.c
+++ b/builtin-log.c
@@ -932,7 +932,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
 	if (argc > 1)
 		die ("unrecognized argument: %s", argv[1]);
 
-	if (!rev.diffopt.output_format)
+	if (!rev.diffopt.output_format
+		|| rev.diffopt.output_format == DIFF_FORMAT_PATCH)
 		rev.diffopt.output_format = DIFF_FORMAT_DIFFSTAT | DIFF_FORMAT_SUMMARY | DIFF_FORMAT_PATCH;
 
 	if (!DIFF_OPT_TST(&rev.diffopt, TEXT) && !no_binary_diff)
diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh
index 7fe853c..9d99dc2 100755
--- a/t/t4014-format-patch.sh
+++ b/t/t4014-format-patch.sh
@@ -230,4 +230,29 @@ test_expect_success 'shortlog of cover-letter wraps overly-long onelines' '
 
 '
 
+cat > expect << EOF
+---
+ file |   16 ++++++++++++++++
+ 1 files changed, 16 insertions(+), 0 deletions(-)
+
+diff --git a/file b/file
+index 40f36c6..2dc5c23 100644
+--- a/file
++++ b/file
+@@ -13,4 +13,20 @@ C
+ 10
+ D
+ E
+ F
++5
+EOF
+
+test_expect_success 'format-patch respects -U' '
+
+	git format-patch -U4 -2 &&
+	sed -e "1,/^$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output &&
+	test_cmp expect output
+
+'
+
 test_done
-- 
1.6.0.150.gc3242.dirty

  reply	other threads:[~2008-08-25  2:12 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-21  9:19 [PATCH] allow user aliases for the --author parameter Michael J Gruber
2008-08-21 13:49 ` Miklos Vajna
2008-08-21 14:30   ` Michael J Gruber
2008-08-21 17:41 ` Alex Riesen
2008-08-21 17:49   ` Alex Riesen
2008-08-21 20:02 ` Jeff King
2008-08-22  6:09   ` Junio C Hamano
2008-08-22  8:27   ` Michael J Gruber
2008-08-22 16:50     ` Jeff King
2008-08-22 21:09       ` Junio C Hamano
2008-08-22 21:19         ` Jeff King
2008-08-26  8:02           ` [PATCH v2] " Michael J Gruber
2008-08-26 23:31             ` Junio C Hamano
2008-08-27  0:19               ` Jeff King
2008-08-27  6:13                 ` Junio C Hamano
2008-08-27  9:36                   ` Michael J Gruber
2008-08-27 12:40                     ` Jeff King
     [not found]                     ` <20080827123656.GB11986@coredump.intra.peff.net>
     [not found]                       ` <7vmyiyqt08.fsf@gitster.siamese.dyndns.org>
2008-08-27 17:18                         ` Jeff King
2008-08-28  8:53                           ` Michael J Gruber
2008-08-28 21:33                             ` Jeff King
     [not found]                     ` <7vr68aqt3h.fsf@gitster.siamese.dyndns.org>
     [not found]                       ` <48B65922.4050005@fastmail.fm>
2008-08-28 21:36                         ` Jeff King
2008-08-27 12:29                   ` Jeff King
2008-08-27 17:19                     ` Junio C Hamano
2008-08-24  9:19         ` [PATCH] " Pedro Melo
2008-08-24 17:21           ` Jeff King
2008-08-25  1:38         ` [PATCH] fix "git log -i --grep" Jeff King
2008-08-25  2:10           ` Jeff King [this message]
2008-08-25  4:57             ` [PATCH] format-patch: use default diff format even with patch options Junio C Hamano
2008-08-25  5:12           ` [PATCH] fix "git log -i --grep" Junio C Hamano
2008-08-25  6:15             ` Jeff King
2008-08-25  6:18               ` Jeff King
2008-08-25  6:27               ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080825021029.GA28355@coredump.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).