@matheusbsbs / matheus-bagliano / commits / 68daa64df2
Fork 0

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> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jeff King committed Aug 24, 2008 at 22:10 UTC 68daa64df2363f848d818dda9fc414511d9330da
2 files changed +27 -1
builtin-log.c
+2 -1
@@ -932,7 +932,8 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
932 if (argc > 1)
933 die ("unrecognized argument: %s", argv[1]);
934
935 - if (!rev.diffopt.output_format)
935 + if (!rev.diffopt.output_format
936 + || rev.diffopt.output_format == DIFF_FORMAT_PATCH)
937 rev.diffopt.output_format = DIFF_FORMAT_DIFFSTAT | DIFF_FORMAT_SUMMARY | DIFF_FORMAT_PATCH;
938
939 if (!DIFF_OPT_TST(&rev.diffopt, TEXT) && !no_binary_diff)
t/t4014-format-patch.sh
+25
@@ -230,4 +230,29 @@ test_expect_success 'shortlog of cover-letter wraps overly-long onelines' '
230
231 '
232
233 +cat > expect << EOF
234 +---
235 + file | 16 ++++++++++++++++
236 + 1 files changed, 16 insertions(+), 0 deletions(-)
237 +
238 +diff --git a/file b/file
239 +index 40f36c6..2dc5c23 100644
240 +--- a/file
241 ++++ b/file
242 +@@ -13,4 +13,20 @@ C
243 + 10
244 + D
245 + E
246 + F
247 ++5
248 +EOF
249 +
250 +test_expect_success 'format-patch respects -U' '
251 +
252 + git format-patch -U4 -2 &&
253 + sed -e "1,/^$/d" -e "/^+5/q" < 0001-This-is-an-excessively-long-subject-line-for-a-messa.patch > output &&
254 + test_cmp expect output
255 +
256 +'
257 +
258 test_done