summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-07-13 18:42:32 -0700
committerJunio C Hamano <gitster@pobox.com>2011-07-13 21:58:15 -0700
commitfe549c21fc3d99b9ff66f03d192f955400c80191 (patch)
tree4295807c97fa212f31ab23eecd7a7a82095d3535
parentff00b682f203eb39876b57404916b4c54b6032c6 (diff)
downloadgit-fe549c21fc3d99b9ff66f03d192f955400c80191.tar.gz
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.c26
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))