unpack-trees: use repository from index instead of global

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>

Jayesh Daga committed Mar 31, 2026 at 15:34 UTC 0c20c6cb230cf7611ee6b6e18c3aeb13986c462e
1 file changed +7 -7
unpack-trees.c
+7 -7
@@ -1780,14 +1780,14 @@ static int clear_ce_flags(struct index_state *istate,
1780
1781 xsnprintf(label, sizeof(label), "clear_ce_flags(0x%08lx,0x%08lx)",
1782 (unsigned long)select_mask, (unsigned long)clear_mask);
1783 - trace2_region_enter("unpack_trees", label, the_repository);
1783 + trace2_region_enter("unpack_trees", label, istate->repo);
1784 rval = clear_ce_flags_1(istate,
1785 istate->cache,
1786 istate->cache_nr,
1787 &prefix,
1788 select_mask, clear_mask,
1789 pl, 0, 0);
1790 - trace2_region_leave("unpack_trees", label, the_repository);
1790 + trace2_region_leave("unpack_trees", label, istate->repo);
1791
1792 stop_progress(&istate->progress);
1793 return rval;
@@ -1882,7 +1882,7 @@ static int verify_absent(const struct cache_entry *,
1882 */
1883 int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options *o)
1884 {
1885 - struct repository *repo = the_repository;
1885 + struct repository *repo = o->src_index->repo;
1886 int i, ret;
1887 static struct cache_entry *dfc;
1888 struct pattern_list pl;
@@ -1903,7 +1903,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
1903 BUG("o->df_conflict_entry is an output only field");
1904
1905 trace_performance_enter();
1906 - trace2_region_enter("unpack_trees", "unpack_trees", the_repository);
1906 + trace2_region_enter("unpack_trees", "unpack_trees", repo);
1907
1908 prepare_repo_settings(repo);
1909 if (repo->settings.command_requires_full_index) {
@@ -2007,9 +2007,9 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
2007 }
2008
2009 trace_performance_enter();
2010 - trace2_region_enter("unpack_trees", "traverse_trees", the_repository);
2010 + trace2_region_enter("unpack_trees", "traverse_trees", repo);
2011 ret = traverse_trees(o->src_index, len, t, &info);
2012 - trace2_region_leave("unpack_trees", "traverse_trees", the_repository);
2012 + trace2_region_leave("unpack_trees", "traverse_trees", repo);
2013 trace_performance_leave("traverse_trees");
2014 if (ret < 0)
2015 goto return_failed;
@@ -2106,7 +2106,7 @@ done:
2106 dir_clear(o->internal.dir);
2107 o->internal.dir = NULL;
2108 }
2109 - trace2_region_leave("unpack_trees", "unpack_trees", the_repository);
2109 + trace2_region_leave("unpack_trees", "unpack_trees", repo);
2110 trace_performance_leave("unpack_trees");
2111 return ret;
2112