Hello Patrick,
On 2024-04-17 08:27, Patrick Steinhardt wrote:
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 <dsimic@xxxxxxxxxxx>
---
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.
Thanks for your feedback!
I'll think about it, and I'll come back a bit later with an update.
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
'