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

Re: [RFC] Add posibility to preload stat information.

From
Jeff King <peff@peff.net>
Date
Mar 20, 2013, 18:46 UTC
Message-ID
<20130320184643.GA30165@sigill.intra.peff.net>
In-Reply-To
<20130320183641.GB32426@paksenarrion.iveqy.com>
On Wed, Mar 20, 2013 at 07:36:41PM +0100, Fredrik Gustafsson wrote:
Show 6 quoted lines
> > Yes, I would certainly like my git startup time to be improved.  But I
> > don't want to trade my hard drive's life for it.
> 
> Does this really increase disk-reads? The fs-cache would make sure that
> the disk reads is almost the same, we only do them before we usually do
> them.

It shouldn't. But if you are running "stat" on every file in the repo for each prompt, that is going to take measurable CPU time for large repos (e.g., WebKit).

Show 10 quoted lines
> > What I meant by "first time" is "chpwd() into the git repository, not
> > further chpwd()s when already inside the git repository".
> 
> That's a good point. I'm not sure how to solve that though. Because it's
> not a fact that you always go to the root git-dir first.
> 
> The only way I see this is with a lock-file that's kept and we only run
> git status every 5 minutes when doing something inside a work dir. That
> would add a lot of meta-data (the lock files), to store. (I hope I
> successfully explained that).
How about something like:
  __git_primed_toplevel=
  __git_prime_dir() {
          local toplevel=`git rev-parse --show-toplevel 2>/dev/null`
          if test -n "$toplevel" &&
             test "$toplevel" != "$git_primed_toplevel"; then
                  git status >/dev/null 2>&1
                  git_primed_toplevel=$toplevel
          fi
  }

that would prime the whole repo the first time you enter it, but otherwise do nothing (and you could run it from each prompt). If you switched back and forth between two repos a lot, you would end up priming them both a lot, but that is not that common a mode of operation (and you could keep an list of recently primed repos instead of a single one, if you really wanted to deal with that). You would also prime twice if you used two different terminals, but that's OK. The subsequent ones are much faster due to disk cache, so this is really just about not paying the extra stat penalty on _every_ prompt.

-Peff
Previous: Fredrik Gustafsson
Message 13 of 13 in “[RFC] Add posibility to preload stat information.”
  1. Fredrik GustafssonMar 20, 2013
  2. Jeff KingMar 20, 2013
  3. Junio C HamanoMar 20, 2013
  4. Jeff KingMar 20, 2013
  5. Thomas RastMar 21, 2013
  6. Junio C HamanoMar 21, 2013
  7. Phil HordMar 30, 2013
  8. Fredrik GustafssonMar 20, 2013
  9. Ramkumar RamachandraMar 20, 2013
  10. Fredrik GustafssonMar 20, 2013
  11. Ramkumar RamachandraMar 20, 2013
  12. Fredrik GustafssonMar 20, 2013
  13. Jeff KingMar 20, 2013

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.