X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=update-index.c;h=d6d3295e329ed2d0f1f46824a210b86c0c092b8f;hb=bad68ec92410cf47dd001aa9b95d0f24c5f4bf77;hp=1efac27c6baf26ed881099e91a3cbd5dbb3c2289;hpb=810e1523753553968aac827f57e0e24fc9af6546;p=git.git diff --git a/update-index.c b/update-index.c index 1efac27c6..d6d3295e3 100644 --- a/update-index.c +++ b/update-index.c @@ -6,6 +6,7 @@ #include "cache.h" #include "strbuf.h" #include "quote.h" +#include "cache-tree.h" /* * Default to not allowing changes to the list of files. The @@ -70,6 +71,7 @@ static int mark_valid(const char *path) active_cache[pos]->ce_flags &= ~htons(CE_VALID); break; } + cache_tree_invalidate_path(active_cache_tree, path); active_cache_changed = 1; return 0; } @@ -83,6 +85,12 @@ static int add_file_to_cache(const char *path) struct stat st; status = lstat(path, &st); + + /* We probably want to do this in remove_file_from_cache() and + * add_cache_entry() instead... + */ + cache_tree_invalidate_path(active_cache_tree, path); + if (status < 0 || S_ISDIR(st.st_mode)) { /* When we used to have "path" and now we want to add * "path/file", we need a way to remove "path" before @@ -325,6 +333,7 @@ static int add_cacheinfo(unsigned int mode, const unsigned char *sha1, return error("%s: cannot add to the index - missing --add option?", path); report("add '%s'", path); + cache_tree_invalidate_path(active_cache_tree, path); return 0; } @@ -349,6 +358,7 @@ static int chmod_path(int flip, const char *path) default: return -1; } + cache_tree_invalidate_path(active_cache_tree, path); active_cache_changed = 1; return 0; } @@ -367,6 +377,7 @@ static void update_one(const char *path, const char *prefix, int prefix_length) die("Unable to mark file %s", path); return; } + cache_tree_invalidate_path(active_cache_tree, path); if (force_remove) { if (remove_file_from_cache(p)) @@ -442,6 +453,7 @@ static void read_index_info(int line_termination) free(path_name); continue; } + cache_tree_invalidate_path(active_cache_tree, path_name); if (!mode) { /* mode == 0 means there is no such path -- remove */