rebase: use 'skip_cache_tree_update' option

Enable the 'skip_cache_tree_update' option in both 'do_reset()' ('sequencer.c') and 'reset_head()' ('reset.c'). Both of these callers invoke 'prime_cache_tree()' after 'unpack_trees()', so we can remove an unnecessary cache tree rebuild by skipping 'cache_tree_update()'. When testing with 'p3400-rebase.sh' and 'p3404-rebase-interactive.sh', the performance change of this update was negligible, likely due to the operation being dominated by more expensive operations (like checking out trees). However, since the change doesn't harm performance, it's worth keeping this 'unpack_trees()' usage consistent with others that subsequently invoke 'prime_cache_tree()'. Signed-off-by: Victoria Dye <vdye@github.com> Signed-off-by: Taylor Blau <me@ttaylorr.com>

Victoria Dye committed Nov 10, 2022 at 19:06 UTC 652bd0211d456be052ff3e884a5e29b74ff824c0
2 files changed +2
reset.c
+1
@@ -128,6 +128,7 @@ int reset_head(struct repository *r, const struct reset_head_opts *opts)
128 unpack_tree_opts.update = 1;
129 unpack_tree_opts.merge = 1;
130 unpack_tree_opts.preserve_ignored = 0; /* FIXME: !overwrite_ignore */
131 + unpack_tree_opts.skip_cache_tree_update = 1;
132 init_checkout_metadata(&unpack_tree_opts.meta, switch_to_branch, oid, NULL);
133 if (reset_hard)
134 unpack_tree_opts.reset = UNPACK_RESET_PROTECT_UNTRACKED;
sequencer.c
+1
@@ -3748,6 +3748,7 @@ static int do_reset(struct repository *r,
3748 unpack_tree_opts.merge = 1;
3749 unpack_tree_opts.update = 1;
3750 unpack_tree_opts.preserve_ignored = 0; /* FIXME: !overwrite_ignore */
3751 + unpack_tree_opts.skip_cache_tree_update = 1;
3752 init_checkout_metadata(&unpack_tree_opts.meta, name, &oid, NULL);
3753
3754 if (repo_read_index_unmerged(r)) {