Thread (36 messages) 36 messages, 8 authors, 18d ago

Re: [PATCH RFC 2/2] builtin/history: print feedback after successful reword

From: Pablo Sabater <hidden>
Date: 2026-06-08 10:46:11

El lun, 8 jun 2026 a las 11:30, Patrick Steinhardt ([off-list ref]) escribió:
On Sun, Jun 07, 2026 at 10:07:21PM +0200, Pablo Sabater wrote:
quoted
Unlike `git commit --amend` and `git rebase -i`, `git history reword`
doesn't print anything, this makes it feel empty for a porcelain command
and hard to tell if the command did anything without using other
commands like `git log <commit>` to check if the reword was done.

Print a message on successful rewords so the user has feedback about it.
I dunno about this one. My take here is that a command should be silent
unless it has something to say, for example when it couldn't honor the
user's request [1].
But neither `git commit --amend` nor `git rebase -i` follow this rule
of silence.
quoted
diff --git a/builtin/history.c b/builtin/history.c
index 51a22a9a1c..0f1ba3b531 100644
--- a/builtin/history.c
+++ b/builtin/history.c
@@ -739,6 +739,10 @@ static int cmd_history_reword(int argc,
              goto out;
      }

+     fprintf(stderr, _("Successfully reworded commit %s to %s\n"),
+             repo_find_unique_abbrev(repo, &original->object.oid, DEFAULT_ABBREV),
+             repo_find_unique_abbrev(repo, &rewritten->object.oid, DEFAULT_ABBREV));
+
Seeing the implementation also raises a couple of questions:

  - Why do we mention the rewritten commit, only? Shouldn't we also
    print the changed HEAD?
Because `git history reword <commit>` is for a single commit. After
the reword the hash changes and the original hash is no longer useful
to check the rewritten message. If I want to see how it is now:

  $ git history reword aabb
  $ git log aabb <- I can't check how it is now because this is the old one

So to check the new one I have to search the new hash. Imagine if it's
the first of 20 long commit messages, I have to git log --oneline, get
the hash and then git log new_hash, which IMO is unnecessary when git
history reword can output the new hash.
  - Why don't we print any of the other rewritten branches?
Haven't thought of that, it's nice that it does modify all branches, I
just assumed that the most relevant is the current branch new commit
hash. The other rewritten branches have the same commit message, just
different hashes.
  - What makes "git history reword" so special as compared to for
    example "git history fixup" or "git history split" so that it needs
    a message while the others don't?
Nothing, I just wanted this specifically for reword and sent this very
simple as an RFC to discuss the idea, I could extend this where it
fits.
It might make sense to maybe introduce a verbose mode where we do print
such information. But if so, we should have good answers to the above
questions and implement this in a way that makes sense for the other
subcommands, too, so that we can apply the same principle to all of
them.
I like the verbose mode idea but I still think that on non-verbose
something should be printed, on verbose it could be printed
additionally all the rewritten commits (though it could get very
noisy), the changed HEAD, etc.
Thanks!

Patrick

[1]: https://www.linfo.org/rule_of_silence.html
--
Pablo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help