From: "Mathias Rav" <m@git•strova.dk>
To: "Johannes Sixt" <j6t@kdbg•org>, "Junio C Hamano" <gitster@pobox•com>
Cc: git@vger•kernel.org, "Phillip Wood" <phillip.wood@dunelm•org.uk>
Subject: Re: [PATCH] rebase -i: use same commit's message and date with f -C
Date: Wed, 24 Sep 2025 17:21:24 +0200 [thread overview]
Message-ID: <7de3da11-6191-4fa3-bd0d-842dc45690e7@app.fastmail.com> (raw)
In-Reply-To: <0a14a93e-7da2-43e1-9d71-c58a69c7a4af@kdbg.org>
On Wed, Sep 24, 2025, at 10:47 AM, Johannes Sixt wrote:
> Am 23.09.25 um 23:38 schrieb Junio C Hamano:
>> "Mathias Rav" <m@git•strova.dk> writes:
>>> Change the behavior so that fixup with -C takes both message and author
>>> from the current commit, instead of taking the author from the previous.
>>
>> I am somewhat negative to this change. I am perfectly fine to have
>> a separate "I may have started from that previous one, but that was
>> so broken that I essentially dismantled the original and replaced
>> with the new one. It is better to attribute the credit to whoever
>> did this last one that is replacing" command. But the "fixup"
>> command people have been familiar with would be different, I would
>> think.
>
> The common situation where the proposed change is handy isn't where a
> previous commit is fixed up.
>
> Sometimes, a previous commit is a fixup for a later one, for example, a
> change slipped into in earlier commit that should go into a later commit
> and has been split off into its own commit. Many times it would be
> sufficient to reorder the commits and be done. However, sometimes (and
> not even infrequently), reordering the commits introduces conflicts that
> do not happen if the order remains. Here, we want the proposed feature.
>
> Since your argument hinges on the word and meaning of "fixup" (which I
> can buy somewhat), we could extend "squash" with an option that
> specifies which commit supplies the date and authorship metadata.
I have never used the "amend!" autosquash feature and I was not aware of
it until I stepped through the code in sequencer.c to implement my
proposed change. I think the `git commit --amend` manual explains quite
nicely why you could want to keep the author of one commit and the
message of another.
Before discovering "f -C" to achieve the "fixdown" behavior, as Hannes
describes, I used "x f" to invoke my own single-letter shell script to
achieve the behavior I wanted, and I guess I am fine with going back to
that for the cases where I want to preserve author dates (which, to be
fair, is often not that important to me).
For completeness, the implementation is ~/.local/lib/git-rebase-utils/f
#!/bin/sh
git cherry-pick -n "$1" && git commit --amend -nC "$1"
...with shell alias git='PATH=~/.local/lib/git-rebase-utils:$PATH \git'
allowing "x f" in git rebase -i without polluting the regular $PATH.
next prev parent reply other threads:[~2025-09-24 15:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-23 8:55 [PATCH] rebase -i: use same commit's message and date with f -C Mathias Rav
2025-09-23 9:21 ` Karthik Nayak
2025-09-23 15:23 ` Phillip Wood
2025-09-23 17:10 ` Ben Knoble
2025-09-23 17:37 ` Kristoffer Haugsbakk
2025-09-23 21:38 ` Junio C Hamano
2025-09-24 8:47 ` Johannes Sixt
2025-09-24 13:48 ` Phillip Wood
2025-09-24 15:21 ` Mathias Rav [this message]
2025-09-25 10:11 ` Phillip Wood
2025-09-25 17:08 ` Junio C Hamano
2025-09-24 16:54 ` Oswald Buddenhagen
2025-09-24 20:48 ` Junio C Hamano
2025-09-25 10:08 ` Phillip Wood
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=7de3da11-6191-4fa3-bd0d-842dc45690e7@app.fastmail.com \
--to=m@git$(echo .)strova.dk \
--cc=git@vger$(echo .)kernel.org \
--cc=gitster@pobox$(echo .)com \
--cc=j6t@kdbg$(echo .)org \
--cc=phillip.wood@dunelm$(echo .)org.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox