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 <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
Mar 10, 2019 at 23:54 UTC
05314efaeaa0ae7cb0aa26d6347eabfe7cd8fc43
2 files changed
+14
revision.c
+4
@@ -2683,6 +2683,10 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
2683
if (revs->first_parent_only && revs->bisect)
2684
die(_("--first-parent is incompatible with --bisect"));
2685
2686
+ if (revs->line_level_traverse &&
2687
+ (revs->diffopt.output_format & ~(DIFF_FORMAT_PATCH | DIFF_FORMAT_NO_OUTPUT)))
2688
+ die(_("-L does not yet support diff formats besides -p and -s"));
2689
+
2690
if (revs->expand_tabs_in_log < 0)
2691
revs->expand_tabs_in_log = revs->expand_tabs_in_log_default;
2692
t/t4211-line-log.sh
+10
@@ -122,4 +122,14 @@ test_expect_success '-s shows only line-log commits' '
122
test_cmp expect actual
123
'
124
125
+test_expect_success '-p shows the default patch output' '
126
+ git log -L1,24:b.c >expect &&
127
+ git log -L1,24:b.c -p >actual &&
128
+ test_cmp expect actual
129
+'
130
+
131
+test_expect_success '--raw is forbidden' '
132
+ test_must_fail git log -L1,24:b.c --raw
133
+'
134
+
135
test_done