Subject: Re: [PATCH 0/1] commit-graph: drop top-level --[no-]progress

From: Taylor Blau <[email-masked]>
Date: Tue, 21 Sep 2021 16:38:42 -0400

On Tue, Sep 21, 2021 at 08:19:47PM +0200, Ævar Arnfjörð Bjarmason wrote:
>
> On Mon, Sep 20 2021, Taylor Blau wrote:
>
> > On Mon, Sep 20, 2021 at 02:24:04PM -0700, Junio C Hamano wrote:
> >> Taylor Blau <[email-masked]> writes:
> >>
> >> > An open question is whether the same should be done for the multi-pack-index
> >> > command, whose top-level support for `--[no-]progress` was released in v2.32.0
> >> > with 60ca94769c (builtin/multi-pack-index.c: split sub-commands, 2021-03-30).
> >>
> >> We do not mind too much about "breaking backward compatibility" by
> >> removing the mistaken "git multi-pack-index --progress cmd", I would
> >> say.  It's not like people would type it once every day and removing
> >> the "support" will break their finger-memory.
> >
> > OK; if we don't mind then we could do something like the following on
> > top. But if we're OK to remove the top-level `--progress` option from
> > the commit-graph and multi-pack-index builtins at any time, then both
> > patches become far less urgent.
>
> I think just taking both this and your commit-graph patches is the right
> thing to do at this point. I.e. we almost entirely take:
>
>     git [git-opts] <cmd> [cmd-opts]
>
> Or:
>
>     git [git-opts] <cmd> <subcmd> [subcmd-opts]
>
> And almost never:
>
>     git [git-opts] <cmd> [global-subcmd-opts] <subcmd> [subcmd-opts]
>
> A notable exception is the --object-dir (I think I found out from
> Derrick at some point why that was even needed v.s. the top-level
> --git-dir, but I can't remember).

There's a good explanation in:

    https://lore.kernel.org/git/[email-masked]/

and a lot of related discussion happening throughout that whole
sub-thread. The gist is that it's to be able to treat directories that
look like they are a repository's object store (but don't actually
belong to any real repository) as if they are an alternate.

> But just as a *general* comment on where our UI should and shouldn't be
> headed, I find your [1] an entirely unconvincing reply to [2]. I.e.:

I think that's a fine argument in the other direction. But to be fair, I
consider the top-level '-c foo.bar=baz' to be different than a
sub-command of the `commit-graph` builtin supporting `--progress`.

Perhaps you consider these the same, and I could even understand why.
But to me, at least, I would be disappointed if we introduced a new
sub-command of commit-graph which didn't generate a progress meter,
while still accepting `--progress`.

In other words, as a user, I would be somewhat confused if I didn't
know any better to have asked for `--progress` in a mode which no
progress will be generated. I imagine it would be confusing not to see
any output *and* not have `--progress` be rejected as an unrecognized
option.

Anyway. To be honest, I find this whole discussion a little too
theoretical for my taste. I think the patch(es) that I wrote for
commit-graph and multi-pack-index seem relatively uncontroversial, and
(at least in the commit-graph case) fix a real problem that we could
avoid leaking out into a release.

Thanks,
Taylor