Re: [PATCHv5 1/3] submodule: Reimplement `module_list` shell function in C
- From
Stefan Beller <sbeller@google.com>
- Date
- Sep 3, 2015, 19:18 UTC
- Message-ID
- <CAGZ79kb5_VJwJoBpvUdVMC43qvJThKa1utQFO68HjM1sciZ6-w@mail.gmail.com>
- In-Reply-To
- <xmqqio7rjppv.fsf@gitster.mtv.corp.google.com>
On Thu, Sep 3, 2015 at 11:57 AM, Junio C Hamano <gitster@pobox.com> wrote:
Show 5 quoted lines
> > It is customary to use X_alloc, X_nr for an array X_something that > is managed by ALLOC_GROW(), I think. I'd also suggest wrapping > these in a struct and passing it between module_list_compute() and > its callers.
I did not take the suggestion as a strong suggestion at the time, but the looking at resulting squash proposal it looks way better.
> I may have said this already, but unlike tree entries, the index > entries will never be a directory. S_ISDIR() check here is > meaningless [*1*].
Right. I was too focused on the other bug, of checking S_ISGITLINK after the pathspec matching, that I overlooked the ISDIR again. :(
Show 16 quoted lines
>> +int cmd_submodule__helper(int argc, const char **argv, const char *prefix)
>> +{
>> + int i;
>> + if (argc < 2)
>> + die(_("fatal: submodule--helper subcommand must be "
>> + "called with a subcommand"));
>> +
>> + for (i = 0; i < ARRAY_SIZE(commands); i++)
>> + if (!strcmp(argv[1], commands[i].cmd))
>> + return commands[i].fn(argc - 1, argv + 1, prefix);
>> +
>> + die(_("fatal: '%s' is not a valid submodule--helper "
>> + "subcommand"), argv[1]);
>> +}
>
> Nice and clean code structure. I like it ;-).It took a good while of discussion and reviews to arrive at that structure eventually.
The squash proposal looks good to me.