git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 02/11] http-backend.c: replace `git_config()` with `git_config_get_bool()` family

From
Eric Sunshine <sunshine@sunshineco.com>
Date
Aug 6, 2014, 20:04 UTC
Message-ID
<CAPig+cT1jaRjBEU6iS2i7-Wk4ocZc=HJ5EWZdVrN01virO4mLA@mail.gmail.com>
In-Reply-To
<vpqfvh9tygl.fsf@anie.imag.fr>

On Wed, Aug 6, 2014 at 11:44 AM, Matthieu Moy <Matthieu.Moy@grenoble-inp.fr> wrote:

Show 53 quoted lines
> Tanay Abhra <tanayabh@gmail.com> writes:
>
>> On 8/5/2014 12:29 AM, Eric Sunshine wrote:
>>> On Mon, Aug 4, 2014 at 2:33 PM, Tanay Abhra <tanayabh@gmail.com> wrote:
>>>> -       if (skip_prefix(var, "http.", &p)) {
>>>> -               int i;
>>>> -
>>>> -               for (i = 0; i < ARRAY_SIZE(rpc_service); i++) {
>>>> -                       struct rpc_service *svc = &rpc_service[i];
>>>> -                       if (!strcmp(p, svc->config_name)) {
>>>> -                               svc->enabled = git_config_bool(var, value);
>>>> -                               return 0;
>>>> -                       }
>>>> -               }
>>>> +       for (i = 0; i < ARRAY_SIZE(rpc_service); i++) {
>>>> +               struct rpc_service *svc = &rpc_service[i];
>>>> +               strbuf_addf(&var, "http.%s", svc->config_name);
>>>> +               if (!git_config_get_bool(var.buf, &value))
>>>> +                       svc->enabled = value;
>>>> +               strbuf_reset(&var);
>>>>         }
>>>
>>> There is a behavior change here. The original code set svc->enabled to
>>> the first matching rpc_service[] entry, whereas the new code sets it
>>> to the last matching entry. Is this change intentional?
>>>
>>
>> I was preparing the reroll and I saw that I had missed your mail.
>> I think that I haven't changed the behaviour, the original one is
>> written in callback form so it has to go through the array every time for each
>> new value.
>> When there are multiple entries for a service say,
>>
>> http.receivepack = 1
>> http.receivepack = 0
>
> I first got convinced by Eric, but I now think you're right.
>
> Eric's point was (I think) not about multiple entries for the same
> variable, but about multiple entries for different services, like
>
> http.receivepack = 1
> http.uploadpack = 0
>
> The order of assignments to svn->enabled change, but it doesn't matter
> because svc is just a local variable pointing to the right element of
> rpc_service[i]. So in both cases, you'll assign
>
> rpc_service[<index of service>].enabled = <last occurence of variable http.<service> >
>
> even though the order of assignments will change.
>
> Eric, am I interpreting right?

Yes. During initial review, I either didn't read the old code closely enough or I misinterpreted it. Upon re-read, Tanay's rewrite looks fine.

Previous: Matthieu MoyNext: Tanay Abhra
Message 8 of 20 in “git_config callers rewritten with the new config-set API”
  1. 00/11 git_config callers rewritten with the new config-set APITanay Abhra, Aug 4, 2014
  2. 01/11 daemon.c: replace `git_config()` with `git_config_get_bool()` familyTanay Abhra, Aug 4, 2014
  3. Matthieu MoyAug 4, 2014
  4. 02/11 http-backend.c: replace `git_config()` with `git_config_get_bool()` familyTanay Abhra, Aug 4, 2014
  5. Eric SunshineAug 4, 2014
  6. Tanay AbhraAug 6, 2014
  7. Matthieu MoyAug 6, 2014
  8. Eric SunshineAug 6, 2014
  9. 03/11 read-cache.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Aug 4, 2014
  10. 04/11 archive.c: replace `git_config()` with `git_config_get_bool()` familyTanay Abhra, Aug 4, 2014
  11. 05/11 fetchpack.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Aug 4, 2014
  12. 06/11 rerere.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Aug 4, 2014
  13. 07/11 builtin/gc.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Aug 4, 2014
  14. Matthieu MoyAug 4, 2014
  15. 08/11 pager.c: replace `git_config()` with `git_config_get_value()`Tanay Abhra, Aug 4, 2014
  16. Matthieu MoyAug 4, 2014
  17. 09/11 imap-send.c: replace `git_config()` with `git_config_get_*()` familyTanay Abhra, Aug 4, 2014
  18. 10/11 alias.c: replace `git_config()` with `git_config_get_string()`Tanay Abhra, Aug 4, 2014
  19. 11/11 branch.c: replace `git_config()` with `git_config_get_string()Tanay Abhra, Aug 4, 2014
  20. Matthieu MoyAug 4, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.