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

Re: [PATCH v1 2/8] Add initial odb remote support

From
Christian Couder <christian.couder@gmail.com>
Date
Jun 23, 2018, 12:15 UTC
Message-ID
<CAP8UFD3kMQxiViL4sUPMjmJHxVkobmTdpJ+=G827hVhPwaxarg@mail.gmail.com>
In-Reply-To
<xmqqh8n9ae17.fsf@gitster-ct.c.googlers.com>
On Tue, May 15, 2018 at 3:44 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Christian Couder <christian.couder@gmail.com> writes:
Show 8 quoted lines
>> --- /dev/null
>> +++ b/odb-helper.h
>> @@ -0,0 +1,13 @@
>> +#ifndef ODB_HELPER_H
>> +#define ODB_HELPER_H
>
> Here is a good space to write a comment on what this structure and
> its fields are about.  Who are the dealers of helpers anyway?
Ok I added a few comments and renamed "dealer" to "remote".
Show 24 quoted lines
>> +static struct odb_helper *helpers;
>> +static struct odb_helper **helpers_tail = &helpers;
>> +
>> +static struct odb_helper *find_or_create_helper(const char *name, int len)
>> +{
>> +     struct odb_helper *o;
>> +
>> +     for (o = helpers; o; o = o->next)
>> +             if (!strncmp(o->name, name, len) && !o->name[len])
>> +                     return o;
>> +
>> +     o = odb_helper_new(name, len);
>> +     *helpers_tail = o;
>> +     helpers_tail = &o->next;
>> +
>> +     return o;
>> +}
>
> This is a tangent, but I wonder if we can do better than
> hand-rolling these singly-linked list of custom structure types
> every time we add new code.  I am just guessing (because it is not
> described in the log message) that the expectation is to have only
> just a handful of helpers so looking for a helper by name is OK at
> O(n), as long as we very infrequently look up a helper by name.

Yeah, I think there will be very few helpers. I added a comment in the version I will send really soon now.

Show 5 quoted lines
>> +     if (!strcmp(subkey, "promisorremote"))
>> +             return git_config_string(&o->dealer, var, value);
>
> If the field is meant to record the name of the promisor remote,
> then it is better to name it as such, no?
Yeah, it is renamed "remote" now.
Show 10 quoted lines
>> +     for (o = helpers; o; o = o->next)
>> +             if (!strcmp(o->dealer, dealer))
>> +                     return o;
>
> The code to create a new helper tried to avoid creating a helper
> with duplicated name, but nobody tries to create more than one
> helpers that point at the same promisor remote.  Yet here we try to
> grab the first one that happens to point at the given promisor.
>
> That somehow smells wrong.

For each promisor remote I think it makes no sense to have more than one remote odb pointing to it. So I am not sure what to do here.

Previous: Junio C HamanoNext: Junio C Hamano
Message 8 of 15 in “Introducing odb remote”
  1. 0/8 Introducing odb remoteChristian Couder, May 13, 2018
  2. 1/8 fetch-object: make functions return an error codeChristian Couder, May 13, 2018
  3. Junio C HamanoMay 15, 2018
  4. 3/8 odb-remote: implement odb_remote_get_direct()Christian Couder, May 13, 2018
  5. 5/8 odb-remote: add odb_remote_reinit()Christian Couder, May 13, 2018
  6. 2/8 Add initial odb remote supportChristian Couder, May 13, 2018
  7. Junio C HamanoMay 15, 2018
  8. Christian CouderJun 23, 2018
  9. Junio C HamanoJun 25, 2018
  10. Ævar Arnfjörð BjarmasonMay 15, 2018
  11. 7/8 Use odb.origin.partialclonefilter instead of core.partialclonefilterChristian Couder, May 13, 2018
  12. 6/8 Use odb_remote_get_direct() and has_external_odb()Christian Couder, May 13, 2018
  13. 8/8 t0410: test fetching from many promisor remotesChristian Couder, May 13, 2018
  14. 4/8 odb-remote: implement odb_remote_get_many_direct()Christian Couder, May 13, 2018
  15. Junio C HamanoMay 14, 2018

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.