Skip to content

Commit

Permalink
diff-index: pass pathspec down to unpack-trees machinery
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
gitster committed Aug 29, 2011
1 parent 40e3725 commit 2f88c19
Showing 1 changed file with 1 addition and 0 deletions.
1 change: 1 addition & 0 deletions diff-lib.c
Expand Up @@ -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))
Expand Down

0 comments on commit 2f88c19

Please sign in to comment.