Thread (197 messages) 197 messages, 9 authors, 2023-11-25

Re: [PATCH 11/14] replay: use standard revision ranges

From: Johannes Schindelin <hidden>
Date: 2023-09-07 15:24:30

Hi Christian,

On Thu, 7 Sep 2023, Christian Couder wrote:
On Sun, Sep 3, 2023 at 5:47 PM Johannes Schindelin
[off-list ref] wrote:
quoted
On Sat, 29 Apr 2023, Elijah Newren wrote:
quoted
On Mon, Apr 24, 2023 at 8:23 AM Derrick Stolee [off-list ref] wrote:
quoted
quoted
quoted
Basically, I'm not super thrilled about exposing options that are
unlikely to be valuable to users and instead are more likely to cause
confusion due to changes that won't successfully apply.
Oh, I got thrown by the "right now" portion of your comment; I
couldn't see how time or future changes would affect anything to make
it less (or more) confusing for users.

Quick clarification, though: while you correctly point out the type of
confusion the user would experience without my overriding, my
overriding of rev.reverse (after setup_revisions() returns, not before
it is called) precludes that experience.  The override means none of
the above happens, and they would instead just wonder why their option
is being ignored.
FWIW here is my view on the matter: `git replay`, at least in its current
incarnation, is a really low-level tool. As such, I actually do not want
to worry much about protecting users from nonsensical invocations.

In that light, I would like to see that code rejecting all revision
options except `--diff-algorithm` be dropped. Should we ever decide to add
a non-low-level mode to `git replay`, we can easily add some user-friendly
sanity check of the options then, and only for that non-low-level code.
For now, I feel that it's just complicating things, and `git replay` is in
the experimental phase anyway.
I would be Ok with removing the patch (called "replay: disallow
revision specific options and pathspecs")
that rejects all revision options and pathspecs if there is a
consensus for that.
Well, since you talk about "consensus" and I already made my strong
preference known, how about you add yours?
It might not simplify things too much if there is still an exception for
`--diff-algorithm` though. Also it's not clear if you are Ok with
allowing pathspecs or not.
I want to remove all the rev-list-option-disallowing code. Including the
pathspec one.
The idea with disallowing all of them was to later add back those that
make sense along with tests and maybe docs to explain them in the
context of this command. It was not to disallow them permanently. So I
would think the best path forward would be a patch series on top of this
one that would revert the patch disallowing these options and maybe
pathspecs, and instead allow most of them and document and test things a
bit.
I understand that that was the reasoning.

What I would like to suggest is that we should treat `git replay` as a
low-level (or: "plumbing" in Git Speak) command.

That would allow us to leave the option for stricter command-line
parameter validation to an _additional_ option, to be added later (or
never), and to stop worrying about this tool being used in ways that make
no sense (or make no sense _to us_, _now_).
quoted
And further, I would even like to see that `--reverse` override go, and
turn it into `revs.reverse = !revs.reverse` instead. (And yes, I can
easily think of instances where I would have wanted to reverse a series of
patches...).
I think this might deserve docs and tests too,
I agree.
so it might want to be part of a separate patch series once the existing
one has graduated.
Here, I disagree. This is a bug, from my perspective, and needs to be
fixed before graduating.
At this point I don't think it's worth delaying this patch series for
relatively small issues like this. There are many different ways this
new command can be polished and improved. The important thing is that
it looks like we all agree that the new command makes sense and should
have roughly the basic set of features that Elijah originally
implemented, so let's go with this, and then we can improve and
iterate on top of this.
If it were for a small issue such as a typo, sure.

But it is a bug that `--no-reverse` is hard-coded (in a confusing manner
so because the `reverse` attribute is set), and the
`--no-reverse`/`--reverse` options are ignored, silently so.

Ciao,
Johannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help