Re: [PATCH v4 1/2] sequencer: extract revert message formatting into shared function
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Mar 13, 2026, 15:53 UTC
- Message-ID
- <xmqqy0jv7ml9.fsf@gitster.g>
- In-Reply-To
- <20260313054035.26605-2-siddharthasthana31@gmail.com>
Siddharth Asthana <siddharthasthana31@gmail.com> writes:
Show 22 quoted lines
> The logic for formatting revert commit messages (handling "Revert" and
> "Reapply" cases, appending "This reverts commit <ref>.", and handling
> merge-parent references) currently lives inline in do_pick_commit().
> The upcoming replay --revert mode needs to reuse this logic.
>
> Extract all of this into a new sequencer_format_revert_message()
> function. The function takes a repository, the subject line, commit,
> parent, a use_commit_reference flag, and the output strbuf. It handles
> both regular reverts ("Revert "<subject>"") and revert-of-revert cases
> ("Reapply "<subject>""), and uses refer_to_commit() internally to
> format the commit reference.
>
> Update refer_to_commit() to take a struct repository parameter instead
> of relying on the_repository, and a bool instead of reading from
> replay_opts directly. This makes it usable from the new shared function
> without pulling in sequencer-specific state.
>
> Signed-off-by: Siddharth Asthana <siddharthasthana31@gmail.com>
> ---
> sequencer.c | 78 +++++++++++++++++++++++++++++++----------------------
> sequencer.h | 14 ++++++++++
> 2 files changed, 60 insertions(+), 32 deletions(-)Relative to the previous round, sequencer_format_revert_message() that does a bit more than sequencer_format_revert_header() we had makes the existing code easier to follow, even though the total codeflow amounts to the same thing. A new caller that will use the function now has to do less.
Also, even though this is an internal implementation detail, changing the list of parameters refer_to_commit() takes makes it easier to understand which part of the replay_opts structure is used (i.e., we only care about "do we use the commit reference, or not?" bit, and we have no interest in any other members of the struct).
Show 15 quoted lines
> +/*
> + * Formats a complete revert commit message following standard Git conventions.
> + * Handles regular reverts ("Revert \"<subject>\""), revert of revert cases
> + * ("Reapply \"<subject>\""), and the --reference style. Appends "This reverts
> + * commit <ref>." using either the abbreviated or full commit reference
> + * depending on use_commit_reference. Also handles merge-parent references.
> + */
> +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 */OK.