diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-07-13 18:42:32 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-07-13 21:58:15 -0700 |
commit | fe549c21fc3d99b9ff66f03d192f955400c80191 (patch) | |
tree | 4295807c97fa212f31ab23eecd7a7a82095d3535 | |
parent | reset [<commit>] paths...: do not mishandle unmerged paths (diff) | |
download | tgif-fe549c21fc3d99b9ff66f03d192f955400c80191.tar.xz |
diff-lib: simplify do_diff_cache()
Since 34110cd (Make 'unpack_trees()' have a separate source and
destination index, 2008-03-06), we can run unpack_trees() without munging
the index at all, but do_diff_cache() tried ever so carefully to work
around the old behaviour of the function.
We can just tell unpack_trees() not to touch the original index and there
is no need to clean-up whatever the previous round has done.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | diff-lib.c | 26 |
1 files changed, 1 insertions, 25 deletions
diff --git a/diff-lib.c b/diff-lib.c index fd61acbdce..b5bb58d183 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -480,33 +480,9 @@ int do_diff_cache(const unsigned char *tree_sha1, struct diff_options *opt) { struct tree *tree; struct rev_info revs; - int i; - struct cache_entry **dst; - struct cache_entry *last = NULL; struct unpack_trees_options opts; struct tree_desc t; - /* - * This is used by git-blame to run diff-cache internally; - * it potentially needs to repeatedly run this, so we will - * start by removing the higher order entries the last round - * left behind. - */ - dst = active_cache; - for (i = 0; i < active_nr; i++) { - struct cache_entry *ce = active_cache[i]; - if (ce_stage(ce)) { - if (last && !strcmp(ce->name, last->name)) - continue; - cache_tree_invalidate_path(active_cache_tree, - ce->name); - last = ce; - ce->ce_flags |= CE_REMOVE; - } - *dst++ = ce; - } - active_nr = dst - active_cache; - init_revisions(&revs, NULL); init_pathspec(&revs.prune_data, opt->pathspec.raw); tree = parse_tree_indirect(tree_sha1); @@ -521,7 +497,7 @@ int do_diff_cache(const unsigned char *tree_sha1, struct diff_options *opt) opts.fn = oneway_diff; opts.unpack_data = &revs; opts.src_index = &the_index; - opts.dst_index = &the_index; + opts.dst_index = NULL; init_tree_desc(&t, tree->buffer, tree->size); if (unpack_trees(1, &t, &opts)) |