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

Re: [PATCH v2 00/36] Promisor remotes and external ODB support

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 19, 2018, 19:13 UTC
Message-ID
<xmqqh8pbvpxu.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20180319133147.15413-1-chriscool@tuxfamily.org>
Christian Couder <christian.couder@gmail.com> writes:
Show 12 quoted lines
> A lot of things are different because the jh/fsck-promisors and
> jh/partial-clone have been merged into master since the v1. So the
> integration is much more complete now (though not fully complete), and
> this integration happens quite early in the patch series.
>
> This integration makes it possible to have many promisor and partial
> clone remotes (instead of just one) with possibly different partial
> clone filters, though that is not tested yet.
>
> I am not sure that the "external odb" name is still the best, as the
> promisor remotes are not quite external. So I am open to suggestions
> about a new name.

So,... so far we have a way to make an incomplete clone of a project from a remote that promises that objects (deliberately) missing from the resulting repository are available later by an on-demand request.

We do not yet have code to actually make an on-demand request, and the other side of the request to fulfill the promise.

And that is what these patches want to do?

That sounds like a "lazy backfill" mechanism; I know others are better in naming things than me, though ;-)

On the other hand, if the code updated with these patches do not cooperate with the promise mechansim (e.g. request is made to any missing objects, instead of "this object was promised by that remote, so let's go there and ask" and "this object is simply missing, without promise by anybody, so let's not bother the promisor remote"), then it is not even "back"-filling, but is a mechanism to access remote object database over a protocol, so a minimum s/ext/remote/ would clarify what it is.

I guess "lazy backfill" would be more preferrable than a pile of independent, competing and uncooperative features ;-)

Show 9 quoted lines
>   - Patches 13/36 and 14/36:
>
> These patches move over the promisor objects and partial clone code to
> use the external odb mechanism. The result of 13/36 is that instead of
> the "extensions.partialclone" config variable, a
> "odb.<name>.promisorRemote" config variable is now used. The result of
> 14/36 is that instead of the "core.partialclonefilter" config
> variable, a "odb.<name>.partialclonefilter" config variable is now
> used.

The use of "extensions" was to protect the repository from versions of Git that are unaware of the "promise" mechanism to even attempt touching it. Will we keep the same degree of safety with these changes, I wonder?

Previous: Christian Couder
Message 38 of 38 in “Promisor remotes and external ODB support”
  1. 00/36 Promisor remotes and external ODB supportChristian Couder, Mar 19, 2018
  2. 01/36 Add initial external odb supportChristian Couder, Mar 19, 2018
  3. 02/36 sha1_file: add prepare_external_alt_odb()Christian Couder, Mar 19, 2018
  4. 06/36 sha1_file: prepare for external odbsChristian Couder, Mar 19, 2018
  5. 05/36 external-odb: implement external_odb_get_directChristian Couder, Mar 19, 2018
  6. 07/36 odb-helper: add 'enum odb_helper_type'Christian Couder, Mar 19, 2018
  7. 04/36 external-odb: add has_external_odb()Christian Couder, Mar 19, 2018
  8. 03/36 Add GIT_NO_EXTERNAL_ODB env variableChristian Couder, Mar 19, 2018
  9. 12/36 external-odb: add external_odb_get_many_direct()Christian Couder, Mar 19, 2018
  10. 16/36 t0500: add 'put_raw_obj' instruction to odb-helper scriptChristian Couder, Mar 19, 2018
  11. 18/36 external-odb: accept only blobs for nowChristian Couder, Mar 19, 2018
  12. 17/36 external odb: add 'put_raw_obj' supportChristian Couder, Mar 19, 2018
  13. 14/36 Use odb.origin.partialclonefilter instead of core.partialclonefilterChristian Couder, Mar 19, 2018
  14. 13/36 Use external_odb_get_direct() and has_external_odb()Christian Couder, Mar 19, 2018
  15. 22/36 lib-httpd: add upload.shChristian Couder, Mar 19, 2018
  16. 21/36 lib-httpd: pass config file to start_httpd()Christian Couder, Mar 19, 2018
  17. 26/36 pack-objects: don't pack objects in external odbsChristian Couder, Mar 19, 2018
  18. 27/36 Add t0520 to test transfer to HTTP external odbChristian Couder, Mar 19, 2018
  19. 30/36 Add t0560 to test passing git objectsChristian Couder, Mar 19, 2018
  20. 36/36 Add Documentation/technical/external-odb.txtChristian Couder, Mar 19, 2018
  21. 11/36 odb-helper: add odb_helper_init() to send 'init' instructionChristian Couder, Mar 19, 2018
  22. 34/36 Add t0580 to test "have" capability and raw objectsChristian Couder, Mar 19, 2018
  23. 33/36 odb-helper: add have_object_process()Christian Couder, Mar 19, 2018
  24. 35/36 external-odb: use 'odb=magic' attribute to mark odb blobsChristian Couder, Mar 19, 2018
  25. 15/36 external-odb: add 'get_direct' supportChristian Couder, Mar 19, 2018
  26. 32/36 Add t0570 to test passing raw objectsChristian Couder, Mar 19, 2018
  27. 31/36 odb-helper: add put_object_process()Christian Couder, Mar 19, 2018
  28. 29/36 Add t0550 to test 'get_direct' mechanismChristian Couder, Mar 19, 2018
  29. 28/36 odb-helper: add init_object_process()Christian Couder, Mar 19, 2018
  30. 25/36 odb-helper: add odb_helper_get_raw_object()Christian Couder, Mar 19, 2018
  31. 20/36 Add t0510 to test external ODB transferChristian Couder, Mar 19, 2018
  32. 19/36 t0500: add test for external odb write supportChristian Couder, Mar 19, 2018
  33. 24/36 lib-httpd: add apache-e-odb.confChristian Couder, Mar 19, 2018
  34. 23/36 lib-httpd: add list.shChristian Couder, Mar 19, 2018
  35. 10/36 odb-helper: add 'script_mode' to 'struct odb_helper'Christian Couder, Mar 19, 2018
  36. 09/36 external-odb: add script mode supportChristian Couder, Mar 19, 2018
  37. 08/36 external-odb: add external_odb_reinit()Christian Couder, Mar 19, 2018
  38. Junio C HamanoMar 19, 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.