All of lore.kernel.org
 help / color / mirror / Atom feed
From: Siddharth Asthana <siddharthasthana31@gmail.com>
To: phillip.wood@dunelm.org.uk, git@vger.kernel.org
Cc: christian.couder@gmail.com, ps@pks.im, newren@gmail.com,
	gitster@pobox.com, karthik.188@gmail.com,
	johannes.schindelin@gmx.de, toon@iotcl.com
Subject: Re: [PATCH v3 1/2] sequencer: extract revert message formatting into shared function
Date: Fri, 6 Mar 2026 10:30:54 +0530	[thread overview]
Message-ID: <bb2a9b1f-5cdd-4c4e-91dc-a631beb009bb@gmail.com> (raw)
In-Reply-To: <c2048ddf-ced4-425d-af6e-14e9442e9d99@gmail.com>



On 26/02/26 19:57, Phillip Wood wrote:
> Hi Siddharth
> 
> On 18/02/2026 23:42, Siddharth Asthana wrote:
>> The logic for formatting revert commit messages (handling "Revert" and
>> "Reapply" cases) is currently duplicated between sequencer.c and will be
>> needed by builtin/replay.c.
>>
>> Extract this logic into a new sequencer_format_revert_header() function
>> that can be shared. The function handles both regular reverts ("Revert
>> "<subject>"") and revert-of-revert cases ("Reapply "<subject>"").
>> When an oid is provided, the function appends the full commit hash and
>> period; otherwise the caller should append the commit reference.
>>
>> Update do_pick_commit() to use the new helper, eliminating code
>> duplication while preserving the special handling for 
>> commit_use_reference.
> 
> I agree with the other comments that this ends up being a bit awkward, I 
> think
> something like the diff below which moves all of the revert message 
> formatting
> into a helper function would be a better approach. Note that I've also 
> added a
> repository argument to refer_to_commit(). You might want to do that in a
> separate commit, but I think it is worth doing if we're adding more 
> callers.
> I've also just used a bool for the use_commit_reference flag, if we want 
> to add
> more flags in the future we can convert it to an unsigned int when we do 
> that.

Thanks, this is much cleaner. Moving refer_to_commit() and the 
merge-parent handling into the same function gets rid of the awkward 
NULL oid path that Toon and Junio pointed out.

I will split the refer_to_commit() signature change (adding struct 
repository *r) into a preparatory commit as you suggested, then have the 
second commit introduce the full sequencer_format_revert_message() helper.

For replay, I will call it with use_commit_reference=false -- that gives 
the full OID through refer_to_commit() directly, no special causing needed.


> 
> Thanks
> 
> Phillip
> 
> 
> ---- 8< ----
> diff --git a/sequencer.c b/sequencer.c
> index a3eb39bb252..30f6da6f959 100644
> --- a/sequencer.c
> +++ b/sequencer.c
> @@ -2198,21 +2198,55 @@ static int should_edit(struct replay_opts *opts) {
>       return opts->edit;
>   }
> 
> -static void refer_to_commit(struct replay_opts *opts,
> -                struct strbuf *msgbuf, struct commit *commit)
> +static void refer_to_commit(struct repository*r, struct strbuf *msgbuf,
> +        const struct commit *commit, bool use_commit_reference)
>   {
> -    if (opts->commit_use_reference) {
> +    if (use_commit_reference) {
>           struct pretty_print_context ctx = {
>               .abbrev = DEFAULT_ABBREV,
>               .date_mode.type = DATE_SHORT,
>           };
> -        repo_format_commit_message(the_repository, commit,
> +        repo_format_commit_message(r, commit,
>                          "%h (%s, %ad)", msgbuf, &ctx);
>       } else {
>           strbuf_addstr(msgbuf, oid_to_hex(&commit->object.oid));
>       }
>   }
> 
> +void sequencer_format_revert_message(struct repository *r, const char 
> *subject,
> +            const struct commit *commit, const struct commit *parent,
> +            bool use_commit_reference, struct strbuf *message)
> +{
> +    const char *orig_subject;
> +
> +    if (use_commit_reference) {
> +            strbuf_commented_addf(message, comment_line_str,
> +                "*** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***");
> +        } else if (skip_prefix(subject, "Revert \"", &orig_subject) &&
> +               /*
> +                * We don't touch pre-existing repeated reverts, because
> +                * theoretically these can be nested arbitrarily deeply,
> +                * thus requiring excessive complexity to deal with.
> +                */
> +               !starts_with(orig_subject, "Revert \"")) {
> +            strbuf_addstr(message, "Reapply \"");
> +            strbuf_addstr(message, orig_subject);
> +            strbuf_addstr(message, "\n");
> +        } else {
> +            strbuf_addstr(message, "Revert \"");
> +            strbuf_addstr(message, subject);
> +            strbuf_addstr(message, "\"\n");
> +        }
> +        strbuf_addstr(message, "\nThis reverts commit ");
> +        refer_to_commit(r, message, commit, use_commit_reference);
> +
> +        if (commit->parents && commit->parents->next) {
> +            strbuf_addstr(message, ", reversing\nchanges made to ");
> +            refer_to_commit(r, message, parent, use_commit_reference);
> +        }
> +        strbuf_addstr(message, ".\n");
> +}
> +
>   static const char *sequencer_reflog_action(struct replay_opts *opts)
>   {
>       if (!opts->reflog_action) {
> @@ -2356,38 +2390,13 @@ static int do_pick_commit(struct repository *r,
>        */
> 
>       if (command == TODO_REVERT) {
> -        const char *orig_subject;
> -
>           base = commit;
>           base_label = msg.label;
>           next = parent;
>           next_label = msg.parent_label;
> -        if (opts->commit_use_reference) {
> -            strbuf_commented_addf(&ctx->message, comment_line_str,
> -                "*** SAY WHY WE ARE REVERTING ON THE TITLE LINE ***");
> -        } else if (skip_prefix(msg.subject, "Revert \"", &orig_subject) &&
> -               /*
> -                * We don't touch pre-existing repeated reverts, because
> -                * theoretically these can be nested arbitrarily deeply,
> -                * thus requiring excessive complexity to deal with.
> -                */
> -               !starts_with(orig_subject, "Revert \"")) {
> -            strbuf_addstr(&ctx->message, "Reapply \"");
> -            strbuf_addstr(&ctx->message, orig_subject);
> -            strbuf_addstr(&ctx->message, "\n");
> -        } else {
> -            strbuf_addstr(&ctx->message, "Revert \"");
> -            strbuf_addstr(&ctx->message, msg.subject);
> -            strbuf_addstr(&ctx->message, "\"\n");
> -        }
> -        strbuf_addstr(&ctx->message, "\nThis reverts commit ");
> -        refer_to_commit(opts, &ctx->message, commit);
> -
> -        if (commit->parents && commit->parents->next) {
> -            strbuf_addstr(&ctx->message, ", reversing\nchanges made to ");
> -            refer_to_commit(opts, &ctx->message, parent);
> -        }
> -        strbuf_addstr(&ctx->message, ".\n");
> +        sequencer_format_revert_message(r,msg.subject, commit, parent,
> +                        opts->commit_use_reference,
> +                        &ctx->message);
>       } else {
>           const char *p;
> 
> diff --git a/sequencer.h b/sequencer.h
> index 719684c8a9f..a61ec6d81d4 100644
> --- a/sequencer.h
> +++ b/sequencer.h
> @@ -271,4 +271,8 @@ int sequencer_determine_whence(struct repository *r, 
> enum commit_whence *whence)
>    */
>   int sequencer_get_update_refs_state(const char *wt_dir, struct 
> string_list *refs);
> 
> +void sequencer_format_revert_message(struct repository *r, const char 
> *subject,
> +                     const struct commit *commit, const struct commit 
> *parent,
> +                     bool use_commit_reference, struct strbuf *message);
> +
>   #endif /* SEQUENCER_H */
> 


  reply	other threads:[~2026-03-06  5:01 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-25 17:00 [PATCH 0/1] replay: add --revert option to reverse commit changes Siddharth Asthana
2025-11-25 17:00 ` [PATCH 1/1] " Siddharth Asthana
2025-11-25 19:22   ` Junio C Hamano
2025-11-25 19:30     ` Junio C Hamano
2025-11-25 19:39       ` Junio C Hamano
2025-11-25 20:06         ` Junio C Hamano
2025-11-26 19:31           ` Siddharth Asthana
2025-11-26 19:28         ` Siddharth Asthana
2025-11-26 19:26     ` Siddharth Asthana
2025-11-26 21:13       ` Junio C Hamano
2025-11-27 19:23         ` Siddharth Asthana
2025-11-26 11:10   ` Phillip Wood
2025-11-26 17:35     ` Elijah Newren
2025-11-26 18:41       ` Junio C Hamano
2025-11-26 21:17         ` Junio C Hamano
2025-11-26 23:06           ` Elijah Newren
2025-11-26 23:14             ` Junio C Hamano
2025-11-26 23:57               ` Elijah Newren
2025-11-26 19:50       ` Siddharth Asthana
2025-11-26 19:39     ` Siddharth Asthana
2025-11-27 16:21       ` Phillip Wood
2025-11-27 19:24         ` Siddharth Asthana
2025-11-25 17:25 ` [PATCH 0/1] " Johannes Schindelin
2025-11-25 18:02   ` Junio C Hamano
2025-11-26 19:18   ` Siddharth Asthana
2025-11-26 21:04     ` Junio C Hamano
2025-11-27 19:21       ` Siddharth Asthana
2025-11-27 20:17         ` Junio C Hamano
2025-11-28  8:07         ` Elijah Newren
2025-11-28  8:24           ` Siddharth Asthana
2025-11-28 16:35             ` Junio C Hamano
2025-11-28 17:07               ` Elijah Newren
2025-11-28 20:50                 ` Junio C Hamano
2025-11-28 22:03                   ` Elijah Newren
2025-11-29  5:59                     ` Junio C Hamano
2025-12-02 20:16 ` [PATCH v2 0/2] replay: add --revert mode " Siddharth Asthana
2025-12-02 20:16   ` [PATCH v2 1/2] sequencer: extract revert message formatting into shared function Siddharth Asthana
2025-12-05 11:33     ` Patrick Steinhardt
2025-12-07 23:00       ` Siddharth Asthana
2025-12-08  7:07         ` Patrick Steinhardt
2026-02-11 13:03           ` Toon Claes
2026-02-11 13:40             ` Patrick Steinhardt
2026-02-11 15:23             ` Kristoffer Haugsbakk
2026-02-11 17:41               ` Junio C Hamano
2026-02-18 22:53             ` Siddharth Asthana
2025-12-02 20:16   ` [PATCH v2 2/2] replay: add --revert mode to reverse commit changes Siddharth Asthana
2025-12-05 11:33     ` Patrick Steinhardt
2025-12-07 23:03       ` Siddharth Asthana
2025-12-16 16:23     ` Phillip Wood
2026-02-18 23:42   ` [PATCH v3 0/2] " Siddharth Asthana
2026-02-18 23:42     ` [PATCH v3 1/2] sequencer: extract revert message formatting into shared function Siddharth Asthana
2026-02-20 17:01       ` Toon Claes
2026-02-25 21:53         ` Junio C Hamano
2026-03-06  4:55           ` Siddharth Asthana
2026-03-06  4:31         ` Siddharth Asthana
2026-02-26 14:27       ` Phillip Wood
2026-03-06  5:00         ` Siddharth Asthana [this message]
2026-02-18 23:42     ` [PATCH v3 2/2] replay: add --revert mode to reverse commit changes Siddharth Asthana
2026-02-20 17:35       ` Toon Claes
2026-02-20 20:23         ` Junio C Hamano
2026-02-23  9:13         ` Christian Couder
2026-02-23 11:23           ` Toon Claes
2026-03-06  5:05         ` Siddharth Asthana
2026-02-26 14:45       ` Phillip Wood
2026-03-06  5:28         ` Siddharth Asthana
2026-03-06 15:52           ` Phillip Wood
2026-03-06 16:20             ` Siddharth Asthana
2026-03-13  5:40     ` [PATCH v4 0/2] " Siddharth Asthana
2026-03-13  5:40       ` [PATCH v4 1/2] sequencer: extract revert message formatting into shared function Siddharth Asthana
2026-03-13 15:53         ` Junio C Hamano
2026-03-16 19:12           ` Toon Claes
2026-03-16 16:57         ` Phillip Wood
2026-03-13  5:40       ` [PATCH v4 2/2] replay: add --revert mode to reverse commit changes Siddharth Asthana
2026-03-16 16:57         ` Phillip Wood
2026-03-16 19:52         ` Toon Claes
2026-03-17 10:11           ` Phillip Wood
2026-03-16 16:59       ` [PATCH v4 0/2] " Phillip Wood
2026-03-16 19:53       ` Toon Claes
2026-03-24 22:03       ` [PATCH v5 " Siddharth Asthana
2026-03-24 22:04         ` [PATCH v5 1/2] sequencer: extract revert message formatting into shared function Siddharth Asthana
2026-03-24 22:04         ` [PATCH v5 2/2] replay: add --revert mode to reverse commit changes Siddharth Asthana
2026-03-25  6:29           ` Junio C Hamano
2026-03-25 15:10             ` Toon Claes
2026-03-25 15:38               ` Siddharth Asthana
2026-03-25 16:44               ` Phillip Wood
2026-03-25 15:36             ` Siddharth Asthana
2026-03-25 20:23         ` [PATCH v6 0/2] " Siddharth Asthana
2026-03-25 20:23           ` [PATCH v6 1/2] sequencer: extract revert message formatting into shared function Siddharth Asthana
2026-03-25 20:23           ` [PATCH v6 2/2] replay: add --revert mode to reverse commit changes Siddharth Asthana
2026-03-28  4:33             ` Tian Yuchen
2026-03-29 16:17               ` Siddharth Asthana
2026-03-30 17:23                 ` Tian Yuchen
2026-03-31  8:08                   ` Toon Claes
2026-03-31  8:11                 ` Toon Claes
2026-03-25 20:23           ` [PATCH v6 1/2] sequencer: extract revert message formatting into shared function Siddharth Asthana
2026-03-25 20:23           ` [PATCH v6 2/2] replay: add --revert mode to reverse commit changes Siddharth Asthana

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

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

  git send-email \
    --in-reply-to=bb2a9b1f-5cdd-4c4e-91dc-a631beb009bb@gmail.com \
    --to=siddharthasthana31@gmail.com \
    --cc=christian.couder@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=johannes.schindelin@gmx.de \
    --cc=karthik.188@gmail.com \
    --cc=newren@gmail.com \
    --cc=phillip.wood@dunelm.org.uk \
    --cc=ps@pks.im \
    --cc=toon@iotcl.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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.