From 05314efaeaa0ae7cb0aa26d6347eabfe7cd8fc43 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Sun, 10 Mar 2019 23:54:33 -0400 Subject: [PATCH] line-log: detect unsupported formats If you use "log -L" with an output format like "--raw" or "--stat", we'll silently ignore the format and just output the normal patch. Let's detect and complain about this, which at least tells the user what's going on. The tests here aren't exhaustive over the set of all formats, but it should at least let us know if somebody breaks the format-checking. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- revision.c | 4 ++++ t/t4211-line-log.sh | 10 ++++++++++ 2 files changed, 14 insertions(+) diff --git a/revision.c b/revision.c index 162d511d46..fc4f33fdd5 100644 --- a/revision.c +++ b/revision.c @@ -2683,6 +2683,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s if (revs->first_parent_only && revs->bisect) die(_("--first-parent is incompatible with --bisect")); + if (revs->line_level_traverse && + (revs->diffopt.output_format & ~(DIFF_FORMAT_PATCH | DIFF_FORMAT_NO_OUTPUT))) + die(_("-L does not yet support diff formats besides -p and -s")); + if (revs->expand_tabs_in_log < 0) revs->expand_tabs_in_log = revs->expand_tabs_in_log_default; diff --git a/t/t4211-line-log.sh b/t/t4211-line-log.sh index c9f2036f68..1db7bd0f59 100755 --- a/t/t4211-line-log.sh +++ b/t/t4211-line-log.sh @@ -122,4 +122,14 @@ test_expect_success '-s shows only line-log commits' ' test_cmp expect actual ' +test_expect_success '-p shows the default patch output' ' + git log -L1,24:b.c >expect && + git log -L1,24:b.c -p >actual && + test_cmp expect actual +' + +test_expect_success '--raw is forbidden' ' + test_must_fail git log -L1,24:b.c --raw +' + test_done