Skip to content
  • Linus Torvalds's avatar
    Avoid some unnecessary lstat() calls · d177cab0
    Linus Torvalds authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    d177cab0