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

Re: [PATCH] fetch: when deepening, check connectivity fully

From
JTJonathan Tan <jonathantanmy@google.com>
Date
Jun 27, 2018, 22:40 UTC
Message-ID
<20180627224033.150025-1-jonathantanmy@google.com>
In-Reply-To
<xmqqin64dmui.fsf@gitster-ct.c.googlers.com>
Show 9 quoted lines
> Hmph, remind me how old and/or new shallow cut-off points affect
> this traversal?  In order to verify that everything above the new
> cut-off points, opt->shallow_file should be pointing at the new
> cut-off points, then we do the full sweep (without --not --all) to
> ensure we won't find missing or broken objects but still stop at the
> new cut-off points, and then only after check_connected() passes,
> update the shallow file to make new shallow cut-off points active
> (and if the traversal fails, then we do nto install the new shallow
> cut-off points)?

That is the way it should work, but after thinking about it once more, I realize that it isn't.

opt->shallow_file is not set to anything. And fetch-pack updates the shallow file by itself (at least, that is my understanding of update_shallow() in fetch-pack.c) before fetch calls check_connected(), meaning that if check_connected() fails, there is still no rollback of the shallow file.

So to directly answer your first question, only the new shallow cut-off points affect this traversal, and not the old ones.

Show 9 quoted lines
> If so, that sounds sensible.  By not having "--not --all", we
> potentially would do a full sweep, but if we are really deepening to
> the root commits, then we do need one full sweep anyway (as these
> deepest parts of the history were previously hidden by the shallow
> cutoff points), and if we are only deepening the history by a bit,
> even if we do not have "--not --all", we would hit the updated
> shallow cutoff points (which may be at older parts of the history)
> and stop, and for correctness we need to visit there anyway, so I
> think we are not being overly pessimistic with this change, either.
Yes, this analysis makes sense.
Previous: Junio C HamanoNext: Junio C Hamano
Message 3 of 8 in “fetch: when deepening, check connectivity fully”
  1. fetch: when deepening, check connectivity fullyJonathan Tan, Jun 27, 2018
  2. Junio C HamanoJun 27, 2018
  3. Jonathan TanJun 27, 2018
  4. Junio C HamanoJun 27, 2018
  5. Jonathan TanJun 29, 2018
  6. Junio C HamanoJun 27, 2018
  7. Jonathan TanJun 27, 2018
  8. Junio C HamanoJun 27, 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.