Skip to content

Commit c207e9e

Browse files
pcloudsgitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 74ae4b6 commit c207e9e

File tree

8 files changed

+25
-19
lines changed

8 files changed

+25
-19
lines changed

builtin/read-tree.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,9 @@ int cmd_read_tree(int argc, const char **argv, const char *unused_prefix)
255255
* what came from the tree.
256256
*/
257257
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]);
259261

260262
if (write_locked_index(&the_index, &lock_file, COMMIT_LOCK))
261263
die("unable to write new index file");

builtin/rebase.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -582,7 +582,7 @@ static int reset_head(struct object_id *oid, const char *action,
582582
}
583583

584584
tree = parse_tree_indirect(oid);
585-
prime_cache_tree(the_repository->index, tree);
585+
prime_cache_tree(the_repository, the_repository->index, tree);
586586

587587
if (write_locked_index(the_repository->index, &lock, COMMIT_LOCK) < 0)
588588
ret = error(_("could not write index"));

builtin/reset.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ static int reset_index(const struct object_id *oid, int reset_type, int quiet)
9393

9494
if (reset_type == MIXED || reset_type == HARD) {
9595
tree = parse_tree_indirect(oid);
96-
prime_cache_tree(&the_index, tree);
96+
prime_cache_tree(the_repository, the_repository->index, tree);
9797
}
9898

9999
ret = 0;

cache-tree.c

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -659,7 +659,9 @@ int write_index_as_tree(struct object_id *oid, struct index_state *index_state,
659659
return ret;
660660
}
661661

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)
663665
{
664666
struct tree_desc desc;
665667
struct name_entry entry;
@@ -673,24 +675,25 @@ static void prime_cache_tree_rec(struct cache_tree *it, struct tree *tree)
673675
cnt++;
674676
else {
675677
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);
678679
if (!subtree->object.parsed)
679680
parse_tree(subtree);
680681
sub = cache_tree_sub(it, entry.path);
681682
sub->cache_tree = cache_tree();
682-
prime_cache_tree_rec(sub->cache_tree, subtree);
683+
prime_cache_tree_rec(r, sub->cache_tree, subtree);
683684
cnt += sub->cache_tree->entry_count;
684685
}
685686
}
686687
it->entry_count = cnt;
687688
}
688689

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)
690693
{
691694
cache_tree_free(&istate->cache_tree);
692695
istate->cache_tree = cache_tree();
693-
prime_cache_tree_rec(istate->cache_tree, tree);
696+
prime_cache_tree_rec(r, istate->cache_tree, tree);
694697
istate->cache_changed |= CACHE_TREE_CHANGED;
695698
}
696699

@@ -726,7 +729,8 @@ int cache_tree_matches_traversal(struct cache_tree *root,
726729
return 0;
727730
}
728731

729-
static void verify_one(struct index_state *istate,
732+
static void verify_one(struct repository *r,
733+
struct index_state *istate,
730734
struct cache_tree *it,
731735
struct strbuf *path)
732736
{
@@ -736,13 +740,13 @@ static void verify_one(struct index_state *istate,
736740

737741
for (i = 0; i < it->subtree_nr; i++) {
738742
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);
740744
strbuf_setlen(path, len);
741745
}
742746

743747
if (it->entry_count < 0 ||
744748
/* 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)
746750
return;
747751

748752
if (path->len) {
@@ -793,12 +797,12 @@ static void verify_one(struct index_state *istate,
793797
strbuf_release(&tree_buf);
794798
}
795799

796-
void cache_tree_verify(struct index_state *istate)
800+
void cache_tree_verify(struct repository *r, struct index_state *istate)
797801
{
798802
struct strbuf path = STRBUF_INIT;
799803

800804
if (!istate->cache_tree)
801805
return;
802-
verify_one(istate, istate->cache_tree, &path);
806+
verify_one(r, istate, istate->cache_tree, &path);
803807
strbuf_release(&path);
804808
}

cache-tree.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ struct cache_tree *cache_tree_read(const char *buffer, unsigned long size);
3232

3333
int cache_tree_fully_valid(struct cache_tree *);
3434
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 *);
3636

3737
/* bitmasks to write_cache_as_tree flags */
3838
#define WRITE_TREE_MISSING_OK 1
@@ -47,7 +47,7 @@ void cache_tree_verify(struct index_state *);
4747
#define WRITE_TREE_PREFIX_ERROR (-3)
4848

4949
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 *);
5151

5252
int cache_tree_matches_traversal(struct cache_tree *, struct name_entry *ent, struct traverse_info *info);
5353

read-cache.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3126,7 +3126,7 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
31263126
struct split_index *si = istate->split_index;
31273127

31283128
if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
3129-
cache_tree_verify(istate);
3129+
cache_tree_verify(the_repository, istate);
31303130

31313131
if ((flags & SKIP_IF_UNCHANGED) && !istate->cache_changed) {
31323132
if (flags & COMMIT_LOCK)

sequencer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2991,7 +2991,7 @@ static int do_reset(struct repository *r,
29912991
}
29922992

29932993
tree = parse_tree_indirect(&oid);
2994-
prime_cache_tree(r->index, tree);
2994+
prime_cache_tree(r, r->index, tree);
29952995

29962996
if (write_locked_index(r->index, &lock, COMMIT_LOCK) < 0)
29972997
ret = error(_("could not write index"));

unpack-trees.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1630,7 +1630,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
16301630
move_index_extensions(&o->result, o->src_index);
16311631
if (!ret) {
16321632
if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
1633-
cache_tree_verify(&o->result);
1633+
cache_tree_verify(the_repository, &o->result);
16341634
if (!o->result.cache_tree)
16351635
o->result.cache_tree = cache_tree();
16361636
if (!cache_tree_fully_valid(o->result.cache_tree))

0 commit comments

Comments
 (0)