Commit 46082c384f6c4872cb2ebef6666e9a65b045b609

Edward Thomson 2016-06-02T02:34:03

index_read_index: invalidate new paths in tree cache When adding a new entry to an existing index via `git_index_read_index`, be sure to remove the tree cache entry for that new path. This will mark all parent trees as dirty.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
diff --git a/src/index.c b/src/index.c
index 430a34f..20ab6a1 100644
--- a/src/index.c
+++ b/src/index.c
@@ -3004,6 +3004,12 @@ int git_index_read_index(
 				((struct entry_internal *)add_entry)->pathlen);
 		}
 
+		/* invalidate this path in the tree cache if this is new (to
+		 * invalidate the parent trees)
+		 */
+		if (dup_entry && !remove_entry && index->tree)
+			git_tree_cache_invalidate_path(index->tree, dup_entry->path);
+
 		if (add_entry) {
 			if ((error = git_vector_insert(&new_entries, add_entry)) == 0)
 				INSERT_IN_MAP_EX(index, new_entries_map, add_entry, error);