From: Patrick Steinhardt Date: Mon, 08 Jun 2026 09:30:44 GMT Subject: Re: [PATCH RFC 1/2] builtin/history: abort reword on unchanged message Message-ID: In-Reply-To: <20260607-ps-history-reword-v1-1-ba43a3cbb81b@gmail.com> On Sun, Jun 07, 2026 at 10:07:20PM +0200, Pablo Sabater wrote: > When using `git history reword` if the new message is the same as the > original it continues anyway creating a new commit with the same > message and updates its descendants, modifying the history after this > 'reworded' commit even though there was no actual change. > > `git commit --amend` and `git rebase -i` + reword share this behavior, > however `git history reword` is different: > 1. Works in-memory without touching the index or the worktree [1], so > there are no side effects like staged files that could justify > rewriting the history when the commit message is the same. > 2. `git history` by default updates all the branches [2] that contain the > original commit making it more costly than `git rebase -i` that only > updates the current branch. > > Add a check if the original commit message is the same as the new one > and abort if so. > > [1]: https://lore.kernel.org/git/20260113-b4-pks-history-builtin-v11-8-e74ebfa2652d@pks.im/ > [2]: https://git-scm.com/docs/git-history#_description Nit: I feel like both of the links don't really add much value. > Signed-off-by: Pablo Sabater > --- > builtin/history.c | 10 ++++++++++ > t/t3451-history-reword.sh | 20 ++++++++++++++++++++ > 2 files changed, 30 insertions(+) > > diff --git a/builtin/history.c b/builtin/history.c > index 0fc06fb204..51a22a9a1c 100644 > --- a/builtin/history.c > +++ b/builtin/history.c > @@ -135,6 +135,13 @@ static int commit_tree_ext(struct repository *repo, > original_body, action, &commit_message); > if (ret < 0) > goto out; > + > + if (!strcmp(original_body, commit_message.buf)) { > + fprintf(stderr, _("Message unchanged," > + " aborting reword.\n")); > + ret = 1; > + goto out; > + } > } else { > strbuf_addstr(&commit_message, original_body); > } We also execute this logic via "git history fixup --reedit-message", and here it wouldn't make sense to abort the commit in case the message is unchanged. Patrick