Re: [PATCH 1/4] sequencer: Do not require `allow_empty` for redundant commit options
- From
Kristoffer Haugsbakk <code@khaugsbakk.name>
- Date
- Jan 20, 2024, 21:38 UTC
- Message-ID
- <d6361ecf-82bc-46c6-adfe-3c6ab25d39b2@app.fastmail.com>
- In-Reply-To
- <20240119060721.3734775-2-brianmlyles@gmail.com>
Initial discussion (proposal): https://lore.kernel.org/git/CAHPHrSevBdQF0BisR8VK=jM=wj1dTUYEVrv31gLerAzL9=Cd8Q@mail.gmail.com/
On Fri, Jan 19, 2024, at 06:59, brianmlyles@gmail.com wrote:
Show 5 quoted lines
> From: Brian Lyles <brianmlyles@gmail.com> > > Previously, a consumer of the sequencer that wishes to take advantage of > either the `keep_redundant_commits` or `drop_redundant_commits` feature > must also specify `allow_empty`.
Previously to this change? It is preferred to describe what the code currently does without this change in the present tense.[1] The change itself uses the imperative mood.[2]
† 1: SubmittingPatches, “The problem statement that describes the status
quo …”
† 2: SubmittingPatches, “Describe your changes in imperative mood […] as
if you are giving orders to the codebase to change its behavior.”Show 10 quoted lines
> The only consumer of `drop_redundant_commits` is `git-rebase`, which > already allows empty commits by default and simply always enables > `allow_empty`. `keep_redundant_commits` was also consumed by > `git-cherry-pick`, which had to specify `allow-empty` when > `keep_redundant_commits` was specified in order for the sequencer's > `allow_empty()` to actually respect `keep_redundant_commits`. > > The latter is an interesting case: As noted in the docs, this means that > `--keep-redundant-commits` implies `--allow-empty`, despite the two > having distinct, non-overlapping meanings:
Huh. I’m used to the git-rebase(1) behavior and I definitely would have just assumed that git-cherry-pick(1) behaves the same. :) Nice catch.
Show 6 quoted lines
> This implication of `--allow-empty` therefore seems incorrect: One > should be able to keep a commit that becomes empty without also being > forced to pick commits that start as empty. However, today, the > following series of commands would result in both the commit that became > empty and the commit that started empty being picked despite only > `--keep-redundant-commits` being specified:
Nice description of the current problem. All of it.
Show 13 quoted lines
> In a future commit, an `--empty` option will be added to > `git-cherry-pick`, meaning that `drop_redundant_commits` will be > available in that command. For that to be possible with the current > implementation of the sequencer's `allow_empty()`, `git-cherry-pick` > would need to specify `allow_empty` with `drop_redundant_commits` as > well, which is an even less intuitive implication of `--allow-empty`: in > order to prevent redundant commits automatically, initially-empty > commits would need to be kept automatically. > > Instead, this commit rewrites the `allow_empty()` logic to remove the > over-arching requirement that `allow_empty` be specified in order to > reach any of the keep/drop behaviors. Only if the commit was originally > empty will `allow_empty` have an effect.
In general, phrases like “this commit <verb>” or “this patch <verb>” can be rewritten to the “commanding” style (see [2]).[3] But here you’re starting a new paragraph after having talked about a future commit, so using the commanding style might be stylistically difficult to pull off without breaking the flow of the text.
And “this [commit][patch] <verb>” seems to be used with some regularity in any case.
🔗 3: https://lore.kernel.org/git/xmqqedeqienh.fsf@gitster.g/
Show 6 quoted lines
> Disclaimer: This is my first contribution to the git project, and thus > my first attempt at submitting a patch via `git-send-email`. It is also > the first time I've touched worked in C in over a decade, and I really > didn't work with it much before that either. I welcome any and all > feedback on what I may have gotten wrong regarding the patch submission > process, the code changes, or my commit messages.
This part (after the commit message) looks like the cover letter for the series (the four patches). `SubmittingPatches` recommends submitting that in a dedicated email message (for series that have more than one patch). Maybe this cover letter style is just an alternative that is equally accepted. But most series use a separate cover letter message for what it’s worth.
Cheers
-- Kristoffer Haugsbakk