Skip to content
  • Junio C Hamano's avatar
    Simplify cache API · 09d5dc32
    Junio C Hamano authored
    
    
    Earlier, add_file_to_index() invalidated the path in the cache-tree
    but remove_file_from_cache() did not, and the user of the latter
    needed to invalidate the entry himself.  This led to a few bugs due to
    missed invalidate calls already.  This patch makes the management of
    cache-tree less error prone by making more invalidate calls from lower
    level cache API functions.
    
    The rules are:
    
     - If you are going to write the index, you should either maintain
       cache_tree correctly.
    
       - If you cannot, alternatively you can remove the entire cache_tree
         by calling cache_tree_free() before you call write_cache().
    
       - When you modify the index, cache_tree_invalidate_path() should be
         called with the path you are modifying, to discard the entry from
         the cache-tree structure.
    
     - The following cache API functions exported from read-cache.c (and
       the macro whose names have "cache" instead of "index")
       automatically call cache_tree_invalidate_path() for you:
    
       - remove_file_from_index();
       - add_file_to_index();
       - add_index_entry();
    
       You can modify the index bypassing the above API functions
       (e.g. find an existing cache entry from the index and modify it in
       place).  You need to call cache_tree_invalidate_path() yourself in
       such a case.
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    09d5dc32