]> git.ipfire.org Git - thirdparty/git.git/commit - read-cache.c
Avoid some unnecessary lstat() calls
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 9 May 2008 16:11:43 +0000 (09:11 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sun, 11 May 2008 01:16:30 +0000 (18:16 -0700)
commitd177cab0480f9fa172103071203fed1bff95f5c2
treeb864a5d65713a74315730aa4222f44bf1149ce06
parent2855e70ad11abf7e7f30f975b063bd60d5abdf4f
Avoid some unnecessary lstat() calls

The commit sequence used to do

if (file_exists(p->path))
add_file_to_cache(p->path, 0);

where both "file_exists()" and "add_file_to_cache()" needed to do a
lstat() on the path to do their work.

This cuts down 'lstat()' calls for the partial commit case by two
for each path we know about (because we do this twice per path).

Just move the lstat() to the caller instead (that's all that
"file_exists()" really does), and pass the stat information down to the
add_to_cache() function.

This essentially makes 'add_to_index()' the core function that adds a path
to the index, getting the index pointer, the pathname and the stat
information as arguments. There are then shorthand helper functions that
use this core function:

 - 'add_to_cache()' is just 'add_to_index()' with the default index

 - 'add_file_to_cache/index()' is the same, but does the lstat() call
   itself, so you can pass just the pathname if you don't already have the
   stat information available.

So old users of the 'add_file_to_xyzzy()' are essentially left unchanged,
and this just exposes the more generic helper function that can take
existing stat information into account.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin-commit.c
cache.h
read-cache.c