diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-08-29 13:34:08 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-29 15:09:17 -0700 |
commit | 2f88c19700feb8db8f116f94bf558e61c82d543c (patch) | |
tree | b245a1187555062e5b1b21fbaf3f7d6bb04cbc1f | |
parent | unpack-trees: allow pruning with pathspec (diff) | |
download | tgif-2f88c19700feb8db8f116f94bf558e61c82d543c.tar.xz |
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>
-rw-r--r-- | diff-lib.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/diff-lib.c b/diff-lib.c index 9c29293bbc..12760b422f 100644 --- a/diff-lib.c +++ b/diff-lib.c @@ -463,6 +463,7 @@ int run_diff_index(struct rev_info *revs, int cached) opts.unpack_data = revs; opts.src_index = &the_index; opts.dst_index = NULL; + opts.pathspec = &revs->diffopt.pathspec; init_tree_desc(&t, tree->buffer, tree->size); if (unpack_trees(1, &t, &opts)) |