From: Junio C Hamano Date: Sun, 21 Jun 2009 04:47:30 +0000 (-0700) Subject: Merge branch 'jc/cache-tree' X-Git-Tag: v1.6.4-rc0~45 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/c28a17f270a51a4ed5e432e83c0ed962361a37c9?ds=inline;hp=-c Merge branch 'jc/cache-tree' * jc/cache-tree: Avoid "diff-index --cached" optimization under --find-copies-harder Optimize "diff-index --cached" using cache-tree t4007: modernize the style cache-tree.c::cache_tree_find(): simplify internal API write-tree --ignore-cache-tree --- c28a17f270a51a4ed5e432e83c0ed962361a37c9 diff --combined diff-lib.c index 0aba6cda3c,ae75eacbcc..ad2a4cde74 --- a/diff-lib.c +++ b/diff-lib.c @@@ -214,7 -214,7 +214,7 @@@ static int get_stat_data(struct cache_e const unsigned char *sha1 = ce->sha1; unsigned int mode = ce->ce_mode; - if (!cached) { + if (!cached && !ce_uptodate(ce)) { int changed; struct stat st; changed = check_removed(ce, &st); @@@ -446,6 -446,8 +446,8 @@@ int run_diff_index(struct rev_info *rev memset(&opts, 0, sizeof(opts)); opts.head_idx = 1; opts.index_only = cached; + opts.diff_index_cached = (cached && + !DIFF_OPT_TST(&revs->diffopt, FIND_COPIES_HARDER)); opts.merge = 1; opts.fn = oneway_diff; opts.unpack_data = revs; @@@ -502,6 -504,7 +504,7 @@@ int do_diff_cache(const unsigned char * memset(&opts, 0, sizeof(opts)); opts.head_idx = 1; opts.index_only = 1; + opts.diff_index_cached = !DIFF_OPT_TST(opt, FIND_COPIES_HARDER); opts.merge = 1; opts.fn = oneway_diff; opts.unpack_data = &revs;