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

Re: [RFC PATCH] diff: only prefetch for certain output formats

From
Jeff King <peff@peff.net>
Date
Jan 31, 2020, 00:14 UTC
Message-ID
<20200131001416.GB2394563@coredump.intra.peff.net>
In-Reply-To
<20200130232002.203193-1-jonathantanmy@google.com>
On Thu, Jan 30, 2020 at 03:20:02PM -0800, Jonathan Tan wrote:
Show 13 quoted lines
> > +	/*
> > +	 * At this point we know there's actual work to do: we have rename
> > +	 * destinations that didn't find an exact match, and we have potential
> > +	 * sources. So we'll have to do inexact rename detection, which
> > +	 * requires looking at the blobs. It's worth pre-fetching them as a
> > +	 * group now.
> > +	 */
> > +	for (i = 0; i < rename_dst_nr; i++) {
> [...]
> 
> And also the equivalent code in diffcore_break() and in diffcore_std()
> after both these functions are invoked (in case nothing got prefetched,
> but the diff still requires blobs).

I think diffcore_break() would probably be OK to just pre-fetch everything if it's enabled, since it has to look at the content of all modifications. Though I suppose _technically_ added/deleted entries do not get looked at, I doubt anybody would care in practice since the primary use is to then feed all of the pairs into the rename code.

The diffcore_std() logic would be similar to what you wrote earlier based on theformats. I think you'd want it to come first, before diffcore_rename(), because it fetches a superset of refname (if it fetches anything at all). I.e., for "diff -M -p", you'd want:

  1. diffcore_std() sees "-p" and fetches everything
  2. diffcore_rename() sees there's nothing we don't already have
rather than:
  1. diffcore_rename() fetches a few blobs to do rename detection
  2. diffcore_std() fetches a few more blobs that weren't rename
     candidates, but we need for "-p"
-Peff
Previous: Jonathan TanNext: Junio C Hamano
Message 6 of 8 in “diff: only prefetch for certain output formats”
  1. diff: only prefetch for certain output formatsJonathan Tan, Jan 28, 2020
  2. Jeff KingJan 29, 2020
  3. Jonathan TanJan 30, 2020
  4. Jeff KingJan 30, 2020
  5. Jonathan TanJan 30, 2020
  6. Jeff KingJan 31, 2020
  7. Junio C HamanoJan 31, 2020
  8. Jeff KingFeb 1, 2020

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.