Jeff King, Tue, Sep 15, 2020 15:05:06 +0200: > On Tue, Sep 15, 2020 at 01:50:25PM +0200, Alex Riesen wrote: > > > > So your patch above looks quite sensible (modulo useful bits like a > > > signoff and maybe a test, though I guess the impact of those options > > > is probably hard to cover in our tests). > > > > I tried to come up with one, but (aside from rather pointless checking of > > option presence in the trace output) failed to. > > > > Or may be precisely this could be the point of the test: just do a fetch with > > all options we intend to pass down to sub-fetches and check that they are > > indeed present in the invocation of fetch --all/--multiple/--recurse-submodules? > > Unfortunately I don't think that accomplishes much, since the main bug > we're worried about is missing options. And it would require somebody > adding the new options to the test, at which point you could just assume > they would add it to add_options_to_argv(). > > Though I guess we can automatically get the list of options these days. > So perhaps something like: > > subopts= > for opt in $(git fetch --git-completion-helper) ... > Except that doesn't quite work, because the parent fetch will complain > about nonsense values (e.g., --filter=1). So it would probably need a > bit more manual intelligence to cover those options. It looks like some > options are mutually exclusive, too (--deepen/--depth), so maybe we'd > need to run an individual "fetch --all" for each option. > > I dunno. It's getting pretty complicated. :) It does :-( And the manual parts will require perpetual maintenance. Not doing that yet than. > > > It is rather unfortunate that anybody adding new fetch options needs to > > > remember to (maybe) add them to add_options_to_argv() themselves. > > > > Maybe make add_options_to_argv to go through builtin_fetch_options[] and copy > > the options with a special marker if they were provided? > > And use the word "recursive" in help text as the marker :) > > Yeah, that would solve the duplication problem. We could probably add a > "recursive" bit to the parse-options flag variable. Even if > parse-options itself doesn't use it, it could be a convenience for > callers like this one. It is a little inconvenient to set flags there, > just because it usually means ditching our wrapper macros in favor of a > raw struct declaration. Or extend the list of wrappers with _REC(URSIVE) macros Regards, Alex