Re: [PATCH v4 01/15] scalar: create a rudimentary executable
- From
Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- Date
- Sep 26, 2021, 19:15 UTC
- Message-ID
- <8735pr2lcq.fsf@evledraar.gmail.com>
- In-Reply-To
- <xmqqy27lvoyb.fsf@gitster.g>
On Fri, Sep 24 2021, Junio C Hamano wrote:
Show 6 quoted lines
> Ævar Arnfjörð Bjarmason <avarab@gmail.com> writes: > >> ... the >> usage.c API, which is generally being phased out. > > That is news to me. Any reason why you think so?
Perhaps better phrased as "generally going unused where we're using parse-options.c", although some quick historical trends I ran as an ad-hoc show usage() standing still since v1.6.0 in number of builtin*.c files[1], v.s. a 3x growth in usage_with_options() since then[2].
But in this case we're using an ad-hoc parser in cmd_main(), seemingly because it ends up copy/pasting a very small part of git.ci functionality over there, which is something that's been discussed as something we should move over to parse_options() sooner than later.
It looks like a better approach to just use parse_options() consistently in scalar.c, as e.g. commit-graph.c, stash.c, multi-pack-index.c etc. that all implement a similar cmd/subcommand pattern do.
The end-state of duplicating the "-C" and "-c" options from git.c can then easily be handled by parse-options.c, IIRC the stumbling point in migrating over git.c was some of the statefulness of other parts potentially needing incremenatl parsing (i.e. via parse_options_step() and friends).
1. $ parallel "printf "%s: " {} && git grep -l '\busage\(' {} -- 'builtin*.c' | wc -l" ::: v1.{1..9}.0 v2.{0..32}.0
v1.1.0:0
v1.2.0:0
v1.3.0:0
v1.4.0:20
v1.5.0:51
v1.7.0:35
v1.6.0:40
v1.8.0:34
v2.1.0:32
v1.9.0:33
v2.0.0:33
v2.2.0:32
v2.3.0:32
v2.4.0:32
v2.5.0:32
v2.6.0:31
v2.7.0:31
v2.9.0:29
v2.8.0:30
v2.11.0:29
v2.10.0:29
v2.12.0:29
v2.13.0:29
v2.14.0:31
v2.15.0:31
v2.16.0:31
v2.17.0:31
v2.19.0:32
v2.18.0:31
v2.22.0:31
v2.21.0:32
v2.24.0:31
v2.23.0:31
v2.20.0:32
v2.25.0:30
v2.26.0:30
v2.27.0:30
v2.32.0:29
v2.31.0:30
v2.29.0:31
v2.28.0:29
v2.30.0:312. $ parallel "printf "%s: " {} && git grep -l '\busage_with_options\(' {} -- 'builtin*.c' | wc -l" ::: v1.{1..9}.0 v2.{0..32}.0
v1.1.0:0
v1.2.0:0
v1.3.0:0
v1.4.0:0
v1.5.0:0
v1.6.0:19
v1.7.0:33
v1.8.0:42
v2.0.0:42
v1.9.0:42
v2.1.0:43
v2.2.0:43
v2.3.0:43
v2.4.0:43
v2.5.0:44
v2.6.0:45
v2.8.0:44
v2.10.0:45
v2.7.0:44
v2.9.0:45
v2.11.0:45
v2.12.0:45
v2.13.0:46
v2.14.0:47
v2.15.0:47
v2.16.0:47
v2.17.0:47
v2.19.0:50
v2.18.0:49
v2.20.0:52
v2.21.0:52
v2.22.0:53
v2.24.0:54
v2.23.0:54
v2.25.0:56
v2.26.0:55
v2.27.0:55
v2.28.0:55
v2.30.0:58
v2.32.0:60
v2.29.0:58
v2.31.0:58