cache-tree.c: remove the_repository references

This case is more interesting than other boring "remove the_repo" commits because while we need access to the object database, we cannot simply use r->index because unpack-trees.c can operate on a temporary index, not $GIT_DIR/index. Ideally we should be able to pass an object database to lookup_tree() but that ship has sailed. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Nguyễn Thái Ngọc Duy committed Nov 10, 2018 at 06:49 UTC c207e9e1f6dd1802f0deadae51af5615d855edc4
8 files changed +25 -19
builtin/read-tree.c
+3 -1
@@ -255,7 +255,9 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
255 * what came from the tree.
256 */
257 if (nr_trees == 1 && !opts.prefix)
258 - prime_cache_tree(&the_index, trees[0]);
258 + prime_cache_tree(the_repository,
259 + the_repository->index,
260 + trees[0]);
261
262 if (write_locked_index(&the_index, &lock_file, COMMIT_LOCK))
263 die("unable to write new index file");
builtin/rebase.c
+1 -1
@@ -582,7 +582,7 @@ static int reset_head(struct object_id *oid, const char *action,
582 }
583
584 tree = parse_tree_indirect(oid);
585 - prime_cache_tree(the_repository->index, tree);
585 + prime_cache_tree(the_repository, the_repository->index, tree);
586
587 if (write_locked_index(the_repository->index, &lock, COMMIT_LOCK) < 0)
588 ret = error(_("could not write index"));
builtin/reset.c
+1 -1
@@ -93,7 +93,7 @@ static int reset_index(const struct object_id *oid, int reset_type, int quiet)
93
94 if (reset_type == MIXED || reset_type == HARD) {
95 tree = parse_tree_indirect(oid);
96 - prime_cache_tree(&the_index, tree);
96 + prime_cache_tree(the_repository, the_repository->index, tree);
97 }
98
99 ret = 0;
cache-tree.c
+15 -11
@@ -659,7 +659,9 @@ out:
659 return ret;
660 }
661
662 -static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree)
662 +static void prime_cache_tree_rec(struct repository *r,
663 + struct cache_tree *it,
664 + struct tree *tree)
665 {
666 struct tree_desc desc;
667 struct name_entry entry;
@@ -673,24 +675,25 @@ static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree)
675 cnt++;
676 else {
677 struct cache_tree_sub *sub;
676 - struct tree *subtree = lookup_tree(the_repository,
677 - entry.oid);
678 + struct tree *subtree = lookup_tree(r, entry.oid);
679 if (!subtree->object.parsed)
680 parse_tree(subtree);
681 sub = cache_tree_sub(it, entry.path);
682 sub->cache_tree = cache_tree();
682 - prime_cache_tree_rec(sub->cache_tree, subtree);
683 + prime_cache_tree_rec(r, sub->cache_tree, subtree);
684 cnt += sub->cache_tree->entry_count;
685 }
686 }
687 it->entry_count = cnt;
688 }
689
689 -void prime_cache_tree(struct index_state *istate, struct tree *tree)
690 +void prime_cache_tree(struct repository *r,
691 + struct index_state *istate,
692 + struct tree *tree)
693 {
694 cache_tree_free(&istate->cache_tree);
695 istate->cache_tree = cache_tree();
693 - prime_cache_tree_rec(istate->cache_tree, tree);
696 + prime_cache_tree_rec(r, istate->cache_tree, tree);
697 istate->cache_changed |= CACHE_TREE_CHANGED;
698 }
699
@@ -726,7 +729,8 @@ int cache_tree_matches_traversal(struct cache_tree *root,
729 return 0;
730 }
731
729 -static void verify_one(struct index_state *istate,
732 +static void verify_one(struct repository *r,
733 + struct index_state *istate,
734 struct cache_tree *it,
735 struct strbuf *path)
736 {
@@ -736,13 +740,13 @@ static void verify_one(struct index_state *istate,
740
741 for (i = 0; i < it->subtree_nr; i++) {
742 strbuf_addf(path, "%s/", it->down[i]->name);
739 - verify_one(istate, it->down[i]->cache_tree, path);
743 + verify_one(r, istate, it->down[i]->cache_tree, path);
744 strbuf_setlen(path, len);
745 }
746
747 if (it->entry_count < 0 ||
748 /* no verification on tests (t7003) that replace trees */
745 - lookup_replace_object(the_repository, &it->oid) != &it->oid)
749 + lookup_replace_object(r, &it->oid) != &it->oid)
750 return;
751
752 if (path->len) {
@@ -793,12 +797,12 @@ static void verify_one(struct index_state *istate,
797 strbuf_release(&tree_buf);
798 }
799
796 -void cache_tree_verify(struct index_state *istate)
800 +void cache_tree_verify(struct repository *r, struct index_state *istate)
801 {
802 struct strbuf path = STRBUF_INIT;
803
804 if (!istate->cache_tree)
805 return;
802 - verify_one(istate, istate->cache_tree, &path);
806 + verify_one(r, istate, istate->cache_tree, &path);
807 strbuf_release(&path);
808 }
cache-tree.h
+2 -2
@@ -32,7 +32,7 @@ struct cache_tree *cache_tree_read(const char *buffer, unsigned long size);
32
33 int cache_tree_fully_valid(struct cache_tree *);
34 int cache_tree_update(struct index_state *, int);
35 -void cache_tree_verify(struct index_state *);
35 +void cache_tree_verify(struct repository *, struct index_state *);
36
37 /* bitmasks to write_cache_as_tree flags */
38 #define WRITE_TREE_MISSING_OK 1
@@ -47,7 +47,7 @@ void cache_tree_verify(struct index_state *);
47 #define WRITE_TREE_PREFIX_ERROR (-3)
48
49 int write_index_as_tree(struct object_id *oid, struct index_state *index_state, const char *index_path, int flags, const char *prefix);
50 -void prime_cache_tree(struct index_state *, struct tree *);
50 +void prime_cache_tree(struct repository *, struct index_state *, struct tree *);
51
52 int cache_tree_matches_traversal(struct cache_tree *, struct name_entry *ent, struct traverse_info *info);
53
read-cache.c
+1 -1
@@ -3126,7 +3126,7 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
3126 struct split_index *si = istate->split_index;
3127
3128 if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
3129 - cache_tree_verify(istate);
3129 + cache_tree_verify(the_repository, istate);
3130
3131 if ((flags & SKIP_IF_UNCHANGED) && !istate->cache_changed) {
3132 if (flags & COMMIT_LOCK)
sequencer.c
+1 -1
@@ -2991,7 +2991,7 @@ static int do_reset(struct repository *r,
2991 }
2992
2993 tree = parse_tree_indirect(&oid);
2994 - prime_cache_tree(r->index, tree);
2994 + prime_cache_tree(r, r->index, tree);
2995
2996 if (write_locked_index(r->index, &lock, COMMIT_LOCK) < 0)
2997 ret = error(_("could not write index"));
unpack-trees.c
+1 -1
@@ -1630,7 +1630,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
1630 move_index_extensions(&o->result, o->src_index);
1631 if (!ret) {
1632 if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
1633 - cache_tree_verify(&o->result);
1633 + cache_tree_verify(the_repository, &o->result);
1634 if (!o->result.cache_tree)
1635 o->result.cache_tree = cache_tree();
1636 if (!cache_tree_fully_valid(o->result.cache_tree))