]> git.ipfire.org Git - thirdparty/git.git/blobdiff - unpack-trees.c
Merge branch 'ab/pager-exit-log'
[thirdparty/git.git] / unpack-trees.c
index 323280dd48b2cb1e7f6e113f58c12d9332574ec4..f5f668f532d8d574735da064f4dfb5feb8c0cd95 100644 (file)
@@ -1549,14 +1549,10 @@ static void mark_new_skip_worktree(struct pattern_list *pl,
 static void populate_from_existing_patterns(struct unpack_trees_options *o,
                                            struct pattern_list *pl)
 {
-       char *sparse = git_pathdup("info/sparse-checkout");
-
-       pl->use_cone_patterns = core_sparse_checkout_cone;
-       if (add_patterns_from_file_to_list(sparse, "", 0, pl, NULL) < 0)
+       if (get_sparse_checkout_patterns(pl) < 0)
                o->skip_sparse_checkout = 1;
        else
                o->pl = pl;
-       free(sparse);
 }
 
 
@@ -1580,6 +1576,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
                die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES);
 
        trace_performance_enter();
+       trace2_region_enter("unpack_trees", "unpack_trees", the_repository);
+
        if (!core_apply_sparse_checkout || !o->update)
                o->skip_sparse_checkout = 1;
        if (!o->skip_sparse_checkout && !o->pl) {
@@ -1653,7 +1651,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);
                ret = traverse_trees(o->src_index, len, t, &info);
+               trace2_region_leave("unpack_trees", "traverse_trees", the_repository);
                trace_performance_leave("traverse_trees");
                if (ret < 0)
                        goto return_failed;
@@ -1722,8 +1722,6 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
                if (!ret) {
                        if (git_env_bool("GIT_TEST_CHECK_CACHE_TREE", 0))
                                cache_tree_verify(the_repository, &o->result);
-                       if (!o->result.cache_tree)
-                               o->result.cache_tree = cache_tree();
                        if (!cache_tree_fully_valid(o->result.cache_tree))
                                cache_tree_update(&o->result,
                                                  WRITE_TREE_SILENT |
@@ -1741,6 +1739,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 done:
        if (free_pattern_list)
                clear_pattern_list(&pl);
+       trace2_region_leave("unpack_trees", "unpack_trees", the_repository);
        trace_performance_leave("unpack_trees");
        return ret;