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

Re: [PATCH] check_everything_connected: assume alternate ref tips are valid

From
Junio C Hamano <gitster@pobox.com>
Date
Jun 28, 2019, 16:22 UTC
Message-ID
<xmqqpnmx8ysf.fsf@gitster-ct.c.googlers.com>
In-Reply-To
<20190628101131.GA22862@sigill.intra.peff.net>
Jeff King <peff@peff.net> writes:
Show 22 quoted lines
> When we receive a remote ref update to sha1 "X", we want to check that
> we have all of the objects needed by "X". We can assume that our
> repository is not currently corrupted, and therefore if we have a ref
> pointing at "Y", we have all of its objects. So we can stop our
> traversal from "X" as soon as we hit "Y".
>
> If we make the same non-corruption assumption about any repositories we
> use to store alternates, then we can also use their ref tips to shorten
> the traversal.
> ...
> diff --git a/connected.c b/connected.c
> index 1ab481fed6..cd9b324afa 100644
> --- a/connected.c
> +++ b/connected.c
> @@ -80,6 +80,7 @@ int check_connected(oid_iterate_fn fn, void *cb_data,
>  		argv_array_push(&rev_list.args, "--all");
>  	}
>  	argv_array_push(&rev_list.args, "--quiet");
> +	argv_array_push(&rev_list.args, "--alternate-refs");
>  	if (opt->progress)
>  		argv_array_pushf(&rev_list.args, "--progress=%s",
>  				 _("Checking connectivity"));

Quite honestly, I am very surprised that we did not do this. The idea of alternate object store, as well as reducing transfer cost by advertising their tips as '.have' phony refs, is almost as old as the pack protocol itself.

Previous: Jeff KingNext: Jeff King
Message 18 of 20 in “check_everything_connected: assume alternate ref tips are valid”
  1. check_everything_connected: assume alternate ref tips are validJeff King, Jun 28, 2019
  2. Jeff KingJun 28, 2019
  3. Derrick StoleeJun 28, 2019
  4. Jeff KingJun 29, 2019
  5. Derrick StoleeJul 1, 2019
  6. Jeff KingJul 1, 2019
  7. Jeff KingJul 1, 2019
  8. 1/2 object-store.h: move for_each_alternate_ref() from transport.hJeff King, Jul 1, 2019
  9. Derrick StoleeJul 1, 2019
  10. 2/2 check_everything_connected: assume alternate ref tips are validJeff King, Jul 1, 2019
  11. SZEDER GáborJul 3, 2019
  12. Jeff KingJul 3, 2019
  13. Junio C HamanoJul 3, 2019
  14. SZEDER GáborJul 3, 2019
  15. Junio C HamanoJul 3, 2019
  16. Taylor BlauJul 1, 2019
  17. Jeff KingJul 2, 2019
  18. Junio C HamanoJun 28, 2019
  19. Jeff KingJun 29, 2019
  20. Derrick StoleeJul 1, 2019

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.