All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phillip Wood <phillip.wood123@gmail.com>
To: Matt Hunter <m@lfurio.us>,
	Harald Nordgren <haraldnordgren@gmail.com>,
	phillip.wood@dunelm.org.uk
Cc: Junio C Hamano <gitster@pobox.com>, git@vger.kernel.org
Subject: Re: What's cooking in git.git (Jul 2026, #12)
Date: Mon, 3 Aug 2026 10:05:15 +0100	[thread overview]
Message-ID: <f00673cc-afc8-4a4f-a668-e22c53b46181@gmail.com> (raw)
In-Reply-To: <DKCKB3HW6VJA.19CQLPOHR6WTI@lfurio.us>

Hi Matt

On 31/07/2026 08:02, Matt Hunter wrote:
> On Thu Jul 30, 2026 at 2:11 AM EDT, Harald Nordgren wrote:
>>> Without "--reedit-message", it will happily discard "amend!" and
>>> "squash!" commit messages even though the user creating them is a strong
>>> signal that they intended to use them to reword the commit.
>>> "--reedit-message" is a rather verbose option name which does not make
>>> sense to me as we're creating a new commit with a new message so we're
>>> not re-editing anything. I've commented elsewhere that I strongly
>>> dislike reusing the rebase squash message template for this command
>>> where we can squash fixups into multiple different commits at the same
>>> time.
> 
> I also agree with these points, but given that they were already brought
> up and dismissed before, I felt it wasn't my place to try to dictate
> high-level design.

If you raise a point and it is dismissed without a convincing 
explanation then its fine to raise it again asking for more details so 
that you can understand the reason behind the decision. That often leads 
to a productive discussion and an improved design.

> I may be misunderstanding your current concern with the first sentence
> Phillip, but this was (at least in part) one of the recent things
> addressed in this feature [1] [2].  If we go with the assumption that the
> default behavior is to squash all the changes, but abandon all context
> outside that provided by the first commit, then accepting amend!
> messages for that first commit seems to drive the behavior closer to
> what you describe.

My feeling is that "amend!" and "squash!" commit messages indicate that 
the user intended to use them when they squashed so I think we should be 
a bit more careful about dropping them compared to other messages.

>> Should we always do "--reedit-message" then, i.e. remove the option
>> and have it as the default? Do we need a "--no-edit" switch then
>> instead? Maybe not, user will then always have the editor opened and
>> they can save and quit if they don't care.
> 
> A script running 'git history squash' may have a harder time with this,
> though something like 'git -c core.editor=/bin/true history squash' is
> at least _some_ workaround.

Can't the script just pass --edit/--no-edit?

> It would seem consistent with other git commands to offer both an --edit
> and --no-edit option.  If --edit is the default, it may make sense to
> offer the option anyway, for the sake of some potential future where
> there exists a config 'history.editSquashMsg' (for example).  '--edit'
> would then override a configured value of 'false'.  Of course, the
> precedent is --reedit-message so far in 'git history'.

That precedent is unfortunate, "--reedit-message" makes sense for the 
"fixup" subcommand because we are reediting an existing message but 
that's not the case with the "squash" subcommand where we're 
constructing a new message from several commits. Given how new the 
"fixup" subcommand is I'm tempted to add an "--edit" option and 
deprecate "--reedit-message".

Having thought about it a bit over the weekend I wonder if the best 
solution when squashing is to default to looking at the commits being 
squashed before deciding whether to open the editor or not and allow the 
user to override that on the commandline like "git commit". If we're 
squashing a bunch of "fixup!" and/or "amend!" commits into a single 
target then I'm not sure its worth opening the editor, but if we're 
squashing other commits together then it probably makes sense to open 
the editor so the user can check the result. I guess the danger is it 
ends up being confusing.

Thanks

Phillip

> 1: https://lore.kernel.org/git/DJY0QSJYNG0J.210HZQH198Y1N@lfurio.us/
> 2: https://lore.kernel.org/git/pull.2337.v9.git.git.1784128573.gitgitgadget@gmail.com/


  reply	other threads:[~2026-08-03  9:05 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-27  3:09 What's cooking in git.git (Jul 2026, #12) Junio C Hamano
2026-07-29 13:24 ` Phillip Wood
2026-07-29 14:18   ` Junio C Hamano
2026-07-29 15:20     ` Phillip Wood
2026-07-29 17:48       ` Junio C Hamano
2026-07-31  6:20     ` Matt Hunter
2026-07-31 15:36       ` Junio C Hamano
2026-07-30  6:11   ` Harald Nordgren
2026-07-31  7:02     ` Matt Hunter
2026-08-03  9:05       ` Phillip Wood [this message]
2026-08-03 16:02         ` Junio C Hamano
2026-08-03  9:11     ` Phillip Wood
2026-07-29 15:14 ` Phillip Wood
2026-07-29 15:52   ` Junio C Hamano

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=f00673cc-afc8-4a4f-a668-e22c53b46181@gmail.com \
    --to=phillip.wood123@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=haraldnordgren@gmail.com \
    --cc=m@lfurio.us \
    --cc=phillip.wood@dunelm.org.uk \
    /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.