Initial discussion (proposal): https://lore.kernel.org/git/CAHPHrSevBdQF0BisR8VK=jM=wj1dTUYEVrv31gLerAzL9=Cd8Q@xxxxxxxxxxxxxx/ On Fri, Jan 19, 2024, at 06:59, brianmlyles@xxxxxxxxx wrote: > From: Brian Lyles <brianmlyles@xxxxxxxxx> > > 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.” > 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. > 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. > 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/ > 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