git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Dragan Simic <dsimic@manjaro.org>
To: Patrick Steinhardt <ps@pks.im>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 2/4] format-patch: fix a bug in option exclusivity and add a test to t4014
Date: Thu, 18 Apr 2024 11:12:26 +0200	[thread overview]
Message-ID: <fa2532fdfd57944c7dd915b0ecc9ce15@manjaro.org> (raw)
In-Reply-To: <47ac35d45693aa5b9fa061e85da6e176@manjaro.org>

Hello Patrick,

On 2024-04-17 08:56, Dragan Simic wrote:
> 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@manjaro.org>
>>> ---
>>>  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.

Unfortunately, we can't use sprefix.len instead, because it can
still be zero even if the --subject-prefix option was present, more
specifically if we receive --subject-prefix="" on the command line.

The checks that use subject_prefix need to check if --subject-prefix
was specified at all as an option, instead of checking if the actual
subject prefix is of non-zero length.

As you already noted, if sprefix.len was used instead of the separate
subject_prefix variable, the '--rfc -k' bug wouldn't be possible, but
the new '--subject-prefix="" -k' bug would be possible instead.

>>>  	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
>>>  '


  reply	other threads:[~2024-04-18  9:13 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-17  3:32 [PATCH 0/4] format-patch: fix an option coexistence bug and add new --resend option Dragan Simic
2024-04-17  3:32 ` [PATCH 1/4] format-patch docs: avoid use of parentheses to improve readability Dragan Simic
2024-04-17  3:32 ` [PATCH 2/4] format-patch: fix a bug in option exclusivity and add a test to t4014 Dragan Simic
2024-04-17  6:15   ` Eric Sunshine
2024-04-17  6:29     ` Dragan Simic
2024-04-17  6:27   ` Patrick Steinhardt
2024-04-17  6:56     ` Dragan Simic
2024-04-18  9:12       ` Dragan Simic [this message]
2024-04-17  6:33   ` Kristoffer Haugsbakk
2024-04-17  6:40     ` Eric Sunshine
2024-04-17  7:11       ` Dragan Simic
2024-04-17 11:38         ` Kristoffer Haugsbakk
2024-04-17 11:48           ` Dragan Simic
2024-04-17  6:54     ` Dragan Simic
2024-04-17 12:00     ` Dragan Simic
2024-04-17  3:32 ` [PATCH 3/4] format-patch: new --resend option for adding "RESEND" to patch subjects Dragan Simic
2024-04-17  6:14   ` Kristoffer Haugsbakk
2024-04-17  6:36     ` Dragan Simic
2024-04-17  6:43       ` Kristoffer Haugsbakk
2024-04-17  7:16         ` Dragan Simic
2024-04-17  6:35   ` Eric Sunshine
2024-04-17  7:05     ` Dragan Simic
2024-04-17  7:17       ` Eric Sunshine
2024-04-17  7:25         ` Dragan Simic
2024-04-18 20:04       ` Dragan Simic
2024-04-17 10:02   ` Phillip Wood
2024-04-17 10:52     ` Dragan Simic
2024-04-17 11:31       ` Kristoffer Haugsbakk
2024-04-17 11:34         ` Dragan Simic
2024-04-17 11:40           ` Kristoffer Haugsbakk
2024-04-17 11:43           ` Dragan Simic
2024-04-17 15:27     ` Junio C Hamano
2024-04-17 17:34       ` Dragan Simic
2024-04-17 21:03         ` Junio C Hamano
2024-04-17 21:09           ` Dragan Simic
2024-04-18  3:12             ` Dragan Simic
2024-04-18 22:34               ` Junio C Hamano
2024-04-19  0:08                 ` Dragan Simic
2024-04-19  0:15                 ` Eric Sunshine
2024-04-19  0:45                   ` Dragan Simic
2024-04-19  3:05                     ` Eric Sunshine
2024-04-19  2:13                   ` Junio C Hamano
2024-04-19  3:07                     ` Eric Sunshine
2024-04-19 16:21                       ` Junio C Hamano
2024-04-17  3:32 ` [PATCH 4/4] t4014: add tests to cover --resend option and its exclusivity Dragan Simic
2024-04-17  6:48   ` Eric Sunshine
2024-04-17  7:20     ` Dragan Simic
2024-04-17  6:02 ` [PATCH 0/4] format-patch: fix an option coexistence bug and add new --resend option Eric Sunshine
2024-04-17  6:07   ` Dragan Simic
2024-04-17  6:23     ` Eric Sunshine
2024-04-17  6:43       ` Dragan Simic

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=fa2532fdfd57944c7dd915b0ecc9ce15@manjaro.org \
    --to=dsimic@manjaro.org \
    --cc=git@vger.kernel.org \
    --cc=ps@pks.im \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).