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

Re: cygwin, 44k files: how to commit only index?

From
Alex Riesen <raa.lkml@gmail.com>
Date
Dec 8, 2006, 07:27 UTC
Message-ID
<81b0412b0612072327x77477584jb9131b26b0854f2@mail.gmail.com>
In-Reply-To
<7vzm9ynahc.fsf@assigned-by-dhcp.cox.net>
On 12/8/06, Junio C Hamano <junkio@cox.net> wrote:
Show 8 quoted lines
> > yes, except that it'll compare the whole trees. Could I make it stop
> > at first mismatch? "-q|--quiet" for git-diff-index perhaps?
> > It's just not only stat, but also, open, read, mmap (yes, I try to use
> > it for packs) and close are really slow here as well.
>
> That sounds like optimizing for a wrong case -- you expect the
> index to match HEAD and trying to catch mistakes by detecting
> a mismatch, right?

I expect the index to differ from HEAD. The test is to avoid the mistake of doing an empty commit.

Show 11 quoted lines
> Having said that, I should point out that it is a low hanging
> fruit to optimize "diff-index --cached" for cases where index
> is expected to mostly match HEAD.
>
> The current code for "diff-index --cached" reads the whole tree
> into the index as stage #1 entries (diff-lib.c::run_diff_index),
> and then compares stage #0 (from the original index contents)
> and stage #1 (the tree parameter from the command line).  Even
> if you stop at the first mismatch, you would already have paid
> the overhead to open and read all tree objects before even
> starting the comparison.

But I don't have to pay for the overhead of comparing all entries, if I can stop at first mismatch and exit with non-0. I think it'd make a difference (at least some difference). But, if we could avoid loading of the entries which will be never compared anyway, the speedup will be of course more substantial...

Show 6 quoted lines
> In 'pu' (jc/diff topic), I have a very generic code to walk the
> index, working tree and zero or more trees in parallel, taking
> advantage of cache-tree.  If somebody is interested to learn the
> internals of git, some of the code could be lifted from there
> and simplified to walk just the index and a single tree, and I
> think that would optimize "diff-index --cached" quite a bit.
Previous: Junio C HamanoNext: Junio C Hamano
Message 14 of 18 in “cygwin, 44k files: how to commit only index?”
  1. Alex RiesenDec 7, 2006
  2. Junio C HamanoDec 7, 2006
  3. Shawn PearceDec 7, 2006
  4. Shawn PearceDec 7, 2006
  5. Christian MICHONDec 7, 2006
  6. Torgil SvenssonDec 9, 2006
  7. Junio C HamanoDec 7, 2006
  8. Shawn PearceDec 7, 2006
  9. Junio C HamanoDec 7, 2006
  10. Alex RiesenDec 7, 2006
  11. Junio C HamanoDec 7, 2006
  12. Alex RiesenDec 8, 2006
  13. Junio C HamanoDec 8, 2006
  14. Alex RiesenDec 8, 2006
  15. Junio C HamanoDec 8, 2006
  16. Alex RiesenDec 8, 2006
  17. Alex RiesenDec 8, 2006
  18. Alex RiesenDec 8, 2006

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.