diff-index: pass pathspec down to unpack-trees machinery

And finally, pass the pathspec down through unpack_trees() to traverse_trees() callchain. Before and after applying this series, looking for changes in the kernel repository with a fairly narrow pathspec becomes somewhat faster. (without patch) $ /usr/bin/time git diff --raw v2.6.27 -- net/ipv6 >/dev/null 0.48user 0.05system 0:00.53elapsed 100%CPU (0avgtext+0avgdata 163296maxresident)k 0inputs+952outputs (0major+11163minor)pagefaults 0swaps (with patch) $ /usr/bin/time git diff --raw v2.6.27 -- net/ipv6 >/dev/null 0.01user 0.00system 0:00.02elapsed 104%CPU (0avgtext+0avgdata 43856maxresident)k 0inputs+24outputs (0major+3688minor)pagefaults 0swaps Signed-off-by: Junio C Hamano <gitster@pobox.com>

Junio C Hamano committed Aug 29, 2011 at 13:34 UTC 2f88c19700feb8db8f116f94bf558e61c82d543c
1 file changed +1
diff-lib.c
+1
@@ -463,6 +463,7 @@ int run_diff_index(struct rev_info *revs, int cached)
463 opts.unpack_data = revs;
464 opts.src_index = &the_index;
465 opts.dst_index = NULL;
466 + opts.pathspec = &revs->diffopt.pathspec;
467
468 init_tree_desc(&t, tree->buffer, tree->size);
469 if (unpack_trees(1, &t, &opts))