aboutsummaryrefslogtreecommitdiff
path: root/builtin-mv.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2007-09-13 20:33:11 -0700
committerJunio C Hamano <gitster@pobox.com>2007-09-14 01:02:21 -0700
commit09d5dc32fbdfa7bfd23fe377455445dd2605c3b9 (patch)
tree52de5d806ece3c99acaba1a82d6504a0e32fa6f8 /builtin-mv.c
parent611d8139e4e0a78797a0821074fc94a4f8d74b7b (diff)
downloadgit-09d5dc32fbdfa7bfd23fe377455445dd2605c3b9.tar.gz
git-09d5dc32fbdfa7bfd23fe377455445dd2605c3b9.tar.xz
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-mv.c')
-rw-r--r--builtin-mv.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/builtin-mv.c b/builtin-mv.c
index 3563216ac..b95b7d286 100644
--- a/builtin-mv.c
+++ b/builtin-mv.c
@@ -276,11 +276,8 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
add_file_to_cache(path, verbose);
}
- for (i = 0; i < deleted.nr; i++) {
- const char *path = deleted.items[i].path;
- remove_file_from_cache(path);
- cache_tree_invalidate_path(active_cache_tree, path);
- }
+ for (i = 0; i < deleted.nr; i++)
+ remove_file_from_cache(deleted.items[i].path);
if (active_cache_changed) {
if (write_cache(newfd, active_cache, active_nr) ||