From: "Uwe Kleine-König" <u.kleine-koenig@pengutronix.de>
To: Junio C Hamano <gitster@pobox.com>
Cc: Michael Strawbridge <michael.strawbridge@amd.com>,
Douglas Anderson <dianders@chromium.org>,
git@vger.kernel.org, entwicklung@pengutronix.de
Subject: Re: Regression: git send-email Message-Id: numbering doesn't start at 1 any more
Date: Tue, 7 Nov 2023 08:06:32 +0100 [thread overview]
Message-ID: <20231107070632.spe3cappk5b5jg3q@pengutronix.de> (raw)
In-Reply-To: <xmqqwmuucwi9.fsf@gitster.g>
[-- Attachment #1: Type: text/plain, Size: 4696 bytes --]
Hello Junio,
On Tue, Nov 07, 2023 at 08:06:22AM +0900, Junio C Hamano wrote:
> Uwe Kleine-König <u.kleine-koenig@pengutronix.de> writes:
>
> > Hello,
> >
> > Since commit 3ece9bf0f9e24909b090cf348d89e8920bd4f82f I experience that
> > the generated Message-Ids don't start at ....-1-... any more. I have:
> >
> > $ git send-email w/*
> > ...
> > Subject: [PATCH 0/5] watchdog: Drop platform_driver_probe() and convert to platform remove callback returning void (part II)
> > Date: Mon, 6 Nov 2023 16:10:04 +0100
> > Message-ID: <20231106151003.3844134-7-u.kleine-koenig@pengutronix.de>
> > ...
> >
> > So the cover letter is sent with Message-Id: ...-7-...
>
> The above is consistent with the fact that a 5-patch series with a
> cover letter consists of 6 messages. Dry-run uses message numbers
> 1-6 and forgets to reset the counter, so the next message becomes 7.
> As you identified, the fix in 3ece9bf0 (send-email: clear the
> $message_id after validation, 2023-05-17) for the fallout from an
> even earlier change to process each message twice still had left an
> observable side effect subject to the Hyrum's law, it seems.
>
> > +my ($message_id_stamp, $message_id_serial);
> > if ($validate) {
> > # FIFOs can only be read once, exclude them from validation.
> > my @real_files = ();
> > @@ -821,6 +822,7 @@ sub is_format_patch_arg {
> > }
> > delete $ENV{GIT_SENDEMAIL_FILE_COUNTER};
> > delete $ENV{GIT_SENDEMAIL_FILE_TOTAL};
> > + $message_id_serial = 0;
> > }
>
> This fix looks quite logical to me, but even with this, the side
> effects of the earlier "read message twice" persists in end-user
> observable form, don't they? IIRC, when sending out an N message
> series, we start from the timestamp as of N seconds ago and give
> each message the Date: header that increments by 1 second, which
> would mean the validator will see Date: that is different from what
> will actually be sent out, and more importantly, the messages sent
> out for real will have timestamps from the future, negating the
> point of starting from N seconds ago in the first place.
The series I used as an example here was finally sent out with
git-send-email patched with my suggested change.
The Message-Ids involved are:
20231106154807.3866712-1-u.kleine-koenig@pengutronix.de
20231106154807.3866712-2-u.kleine-koenig@pengutronix.de
20231106154807.3866712-3-u.kleine-koenig@pengutronix.de
20231106154807.3866712-4-u.kleine-koenig@pengutronix.de
20231106154807.3866712-5-u.kleine-koenig@pengutronix.de
20231106154807.3866712-6-u.kleine-koenig@pengutronix.de
So the Ids are are identical apart from the number this report is about.
> Your script may not have been paying attention to it and only noticed
> the difference in id_serial, but somebody else would complain the
> difference coming from calling gen_header more than once for each
> messages since a8022c5f (send-email: expose header information to
> git-send-email's sendemail-validate hook, 2023-04-19).
>
> So, I dunno. Michael, what do you think? It appears to me that a
> more fundamental fix to the fallout from a8022c5f might be needed
> (e.g., we still let gen_header run while validating, but once
> validation is done, save the headers that validator saw and use them
> without calling gen_header again when we send the messages out, or
> something), if we truly want to be regression free.
That sounds sane.
> By the way, out of curiosity, earlier you said your script looks at
> the Message-IDs and counts the number of messages. How does it do
> that? Does it read the output of send-email and pass the messages
> to MTA for sending out for real?
The output of git send-email dumps the messages it sends out and then I
pick the message-id of the last mail by cut-n-paste and call my script
with that as a parameter. It then adds notes to the $commitcount topmost
commits such that I have something like this on the sent out commits:
Notes:
Forwarded: id:20231106154807.3866712-2-u.kleine-koenig@pengutronix.de (v1)
This is very convenient to find the thread to ping if a patch doesn't
make it into the next release.
(By the way, one difficulty in my script is that depending on the series
having a cover letter or not I have to apply the id:....-1-... marker or
not. Would be great if git send-email started with ...-0-... for a
series with a cover letter. Detecting that reliably isn't trivial I
guess.)
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ |
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
next prev parent reply other threads:[~2023-11-07 7:06 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-06 15:32 Regression: git send-email Message-Id: numbering doesn't start at 1 any more Uwe Kleine-König
2023-11-06 23:06 ` Junio C Hamano
2023-11-07 7:06 ` Uwe Kleine-König [this message]
2023-11-08 1:34 ` Junio C Hamano
2023-11-08 20:39 ` Michael Strawbridge
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=20231107070632.spe3cappk5b5jg3q@pengutronix.de \
--to=u.kleine-koenig@pengutronix.de \
--cc=dianders@chromium.org \
--cc=entwicklung@pengutronix.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=michael.strawbridge@amd.com \
/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).