On Wed, Apr 17, 2024 at 05:32:42AM +0200, Dragan Simic wrote: > Fix a bug that allows --rfc and -k options to be specified together when > executing "git format-patch". This bug was introduced back in the commit > e0d7db7423a9 ("format-patch: --rfc honors what --subject-prefix sets"), > about eight months ago, but it has remained undetected so far, presumably > because of no associated test coverage. > > Add a new test to the t4014 that covers the mutual exclusivity of the --rfc > and -k command-line options for "git format-patch", for future coverage. > > Signed-off-by: Dragan Simic > --- > builtin/log.c | 5 ++++- > t/t4014-format-patch.sh | 4 ++++ > 2 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/builtin/log.c b/builtin/log.c > index c0a8bb95e983..e5a238f1cf2c 100644 > --- a/builtin/log.c > +++ b/builtin/log.c > @@ -2050,8 +2050,11 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix) > if (cover_from_description_arg) > cover_from_description_mode = parse_cover_from_description(cover_from_description_arg); > > - if (rfc) > + /* Also mark the subject prefix as modified, for later checks */ > + if (rfc) { > strbuf_insertstr(&sprefix, 0, "RFC "); > + subject_prefix = 1; > + } As an alternative fix, can we drop `subject_prefix` and replace it with `sprefix.len` instead? It seems to merely be a proxy value for that anyway, and if we didn't have that variable then the bug would not have been possible to begin with. Patrick > if (reroll_count) { > strbuf_addf(&sprefix, " v%s", reroll_count); > diff --git a/t/t4014-format-patch.sh b/t/t4014-format-patch.sh > index e37a1411ee24..e22c4ac34e6e 100755 > --- a/t/t4014-format-patch.sh > +++ b/t/t4014-format-patch.sh > @@ -1397,6 +1397,10 @@ test_expect_success '--rfc is argument order independent' ' > test_cmp expect actual > ' > > +test_expect_success '--rfc and -k cannot be used together' ' > + test_must_fail git format-patch -1 --stdout --rfc -k >patch > +' > + > test_expect_success '--from=ident notices bogus ident' ' > test_must_fail git format-patch -1 --stdout --from=foo >patch > ' >