Hi Emily, I was the one who originally implemented --refetch in [1][2] [1] https://lore.kernel.org/git/pull.1138.v4.git.1648476131.gitgitgadget@xxxxxxxxx/ [2] https://github.com/gitgitgadget/git/pull/1138 On Sun, 6 Oct 2024 at 23:43, Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Hmph. The whole lazy fetch business looks more and more broken X-<. > There is a comment in the refetch code path that tells us to "perform > a full refetch ignoring existing objects", but if an object truly > exists, there should be no need to refetch, and it starts to smell > more like "ignoring somebody who gives us an incorrect information > that these objects exist". Basically --refetch was originally designed to send no 'have's during a fetch, the original motivation being changing a partial clone filter and fetching all the newly-applicable trees & blobs in a single transfer. > The documentation for "git fetch --refetch" says that this grabs > everything as if we are making a fresh clone, ignoring everything we > already have. Which makes the change in this patch prohibitively > expensive for asking each single object lazily from the promisor > remote, but is that really the case?