diff options
| author | Junio C Hamano <gitster@pobox.com> | 2007-09-13 20:33:11 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2007-09-14 01:02:21 -0700 | 
| commit | 09d5dc32fbdfa7bfd23fe377455445dd2605c3b9 (patch) | |
| tree | 52de5d806ece3c99acaba1a82d6504a0e32fa6f8 /builtin-rm.c | |
| parent | 611d8139e4e0a78797a0821074fc94a4f8d74b7b (diff) | |
| download | git-09d5dc32fbdfa7bfd23fe377455445dd2605c3b9.tar.gz | |
Simplify cache API
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: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin-rm.c')
| -rw-r--r-- | builtin-rm.c | 1 | 
1 files changed, 0 insertions, 1 deletions
diff --git a/builtin-rm.c b/builtin-rm.c index 9a808c1bf9..3b0677e44b 100644 --- a/builtin-rm.c +++ b/builtin-rm.c @@ -227,7 +227,6 @@ int cmd_rm(int argc, const char **argv, const char *prefix)  		if (remove_file_from_cache(path))  			die("git-rm: unable to remove %s", path); -		cache_tree_invalidate_path(active_cache_tree, path);  	}  	if (show_only)  | 
