]> git.ipfire.org Git - thirdparty/git.git/commitdiff
unpack-trees: use repository from index instead of global
authorJayesh Daga <jayeshdaga99@gmail.com>
Tue, 31 Mar 2026 15:34:26 +0000 (15:34 +0000)
committerJunio C Hamano <gitster@pobox.com>
Tue, 9 Jun 2026 21:25:03 +0000 (14:25 -0700)
unpack_trees() currently initializes its repository from the
global 'the_repository', even though a repository instance is
already available via the source index.

Use 'o->src_index->repo' instead of the global variable,
reducing reliance on global repository state.

This is a step towards eliminating global repository usage in
unpack_trees().

Suggested-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Jayesh Daga <jayeshdaga99@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
unpack-trees.c

index 998a1e6dc70cae48a700651459ba87b8151a765a..b42020f16b10ae665aa434a6b1cda5bf1c434e2c 100644 (file)
@@ -1780,14 +1780,14 @@ static int clear_ce_flags(struct index_state *istate,
 
        xsnprintf(label, sizeof(label), "clear_ce_flags(0x%08lx,0x%08lx)",
                  (unsigned long)select_mask, (unsigned long)clear_mask);
-       trace2_region_enter("unpack_trees", label, the_repository);
+       trace2_region_enter("unpack_trees", label, istate->repo);
        rval = clear_ce_flags_1(istate,
                                istate->cache,
                                istate->cache_nr,
                                &prefix,
                                select_mask, clear_mask,
                                pl, 0, 0);
-       trace2_region_leave("unpack_trees", label, the_repository);
+       trace2_region_leave("unpack_trees", label, istate->repo);
 
        stop_progress(&istate->progress);
        return rval;
@@ -1882,7 +1882,7 @@ static int verify_absent(const struct cache_entry *,
  */
 int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options *o)
 {
-       struct repository *repo = the_repository;
+       struct repository *repo = o->src_index->repo;
        int i, ret;
        static struct cache_entry *dfc;
        struct pattern_list pl;
@@ -1903,7 +1903,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
                BUG("o->df_conflict_entry is an output only field");
 
        trace_performance_enter();
-       trace2_region_enter("unpack_trees", "unpack_trees", the_repository);
+       trace2_region_enter("unpack_trees", "unpack_trees", repo);
 
        prepare_repo_settings(repo);
        if (repo->settings.command_requires_full_index) {
@@ -2007,9 +2007,9 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
                }
 
                trace_performance_enter();
-               trace2_region_enter("unpack_trees", "traverse_trees", the_repository);
+               trace2_region_enter("unpack_trees", "traverse_trees", repo);
                ret = traverse_trees(o->src_index, len, t, &info);
-               trace2_region_leave("unpack_trees", "traverse_trees", the_repository);
+               trace2_region_leave("unpack_trees", "traverse_trees", repo);
                trace_performance_leave("traverse_trees");
                if (ret < 0)
                        goto return_failed;
@@ -2106,7 +2106,7 @@ done:
                dir_clear(o->internal.dir);
                o->internal.dir = NULL;
        }
-       trace2_region_leave("unpack_trees", "unpack_trees", the_repository);
+       trace2_region_leave("unpack_trees", "unpack_trees", repo);
        trace_performance_leave("unpack_trees");
        return ret;