diff options
author | Brian Degenhardt <bmd@bmdhacks.com> | 2015-07-28 15:30:40 -0400 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-07-28 13:43:13 -0700 |
commit | 52fca2184df8398f0ba212cd6a0ec1fb123b7473 (patch) | |
tree | eb783ea1b263c7105a4b1798e4f4bca68bb0fd99 /unpack-trees.c | |
parent | 9a3d637541a5b6fcd84b6f5fa057e597d1696460 (diff) | |
download | git-52fca2184df8398f0ba212cd6a0ec1fb123b7473.tar.gz |
unpack-trees: populate cache-tree on successful mergedt/unpack-trees-cache-tree-revalidate
When we unpack trees into an existing index, we discard the old
index and replace it with the new, merged index. Ensure that this
index has its cache-tree populated. This will make subsequent git
status and commit commands faster.
Signed-off-by: Brian Degenhardt <bmd@bmdhacks.com>
Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'unpack-trees.c')
-rw-r--r-- | unpack-trees.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index be84ba2607..d92f903402 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -1155,6 +1155,14 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options o->src_index = NULL; ret = check_updates(o) ? (-2) : 0; if (o->dst_index) { + if (!ret) { + 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 | + WRITE_TREE_REPAIR); + } discard_index(o->dst_index); *o->dst_index = o->result; } else { |