Re: [PATCH v2 1/3] builtin/commit-graph.c: support '--split[=<strategy>]'
- From
Taylor Blau <me@ttaylorr.com>
- Date
- Feb 9, 2020, 23:32 UTC
- Message-ID
- <20200209233227.GF4530@syl.local>
- In-Reply-To
- <3acac399-9476-e4ad-556e-e0138380eeb0@gmail.com>
On Fri, Feb 07, 2020 at 10:48:39AM -0500, Derrick Stolee wrote:
Show 51 quoted lines
> On 2/6/2020 2:41 PM, Martin Ågren wrote:
> > On Wed, 5 Feb 2020 at 01:28, Taylor Blau <me@ttaylorr.com> wrote:
> >> * If `--size-multiple=<X>` is not specified, let `X` equal 2. If the new
> >> tip file would have `N` commits and the previous tip has `M` commits and
> >
> >> - OPT_BOOL(0, "split", &opts.split,
> >> - N_("allow writing an incremental commit-graph file")),
> >> + OPT_CALLBACK_F(0, "split", &split_opts.flags, NULL,
> >> + N_("allow writing an incremental commit-graph file"),
> >> + PARSE_OPT_OPTARG | PARSE_OPT_NONEG,
> >> + write_option_parse_split),
> >
> >
> > I keep getting back to this -- sorry! So this actually forbids
> > "--no-split", which used to work before. Unfortunate?
>
> That certainly is unfortunate. Hopefully no one is taking a dependence on
> this, which only means something if they had a `--split` previously in
> the command-line arguments.
>
> > I have to ask, what is the long-term plan for the two formats (split and
> > non-split)? As I understand it, and I might well be wrong, the non-split
> > format came first and the split format was a user-experience
> > improvement. Should we expect that `--split` becomes the default?
>
> In some ways, the split is now the default because that is how it is
> written during 'git fetch' using fetch.writeCommitGraph. However, I
> don't think that it will ever become the default for the commit-graph
> builtin.
>
> > In
> > which case `--no-split` would be needed. Or might the non-split format
> > go away entirely, leaving `--split` a no-op and `--split=<strategy>` a
> > pretty funky way of choosing a strategy for the one-and-only file
> > format?
>
> In some ways, the --split=merge-all is similar, except it writes a one-line
> commit-graph-chain file and puts a .graph file in
> .git/objects/info/commit-graphs instead of writing to .git/objects/commit-graph.
>
> > To try to be concrete, here's a suggestion: `--format=split` and
> > `--split-strategy=<strategy>`.
>
> Why --format=split instead of leaving it as --[no-]split? Is there a reason to
> introduce this string-based option when there are only two options right now?
>
> Perhaps using --split-strategy=<strategy> is the most backwards-compatible
> option, especially because we won't need --split="" to substitute for
> "auto-merge". However, I wonder if this is a case where we should make the
> hard choice to sacrifice a narrow backwards-compatibility in favor of a
> simplified set of options?My preference would be the latter, which I vaguely indicated in my last email to Martin. Like I said, I think that the number of hypothetical cases that we're breaking is pretty small, if not zero, and so I don't feel too worried about changing the behavior like this.
If others feel strongly that keeping '--no-split' functional in the classical sense is worthwhile, then I'm certainly happy to introduce '--split-strategy' as another option, but I think that we agree that the simplicity is worth the tradeoff here.
> Thanks, > -Stolee
Thanks, Taylor