contacts: reduce git-blame invocations
commit4c70cfbfbc2da8d0e4f94b73e37b4020704a498b
authorEric Sunshine <sunshine@sunshineco.com>
Fri, 9 Aug 2013 21:39:56 +0000 (9 17:39 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 13 Aug 2013 16:09:03 +0000 (13 09:09 -0700)
tree9b1bfbedc1f2bcc1bba957de41c08d51ae94b33c
parentdb8cae7e6035dd56970c88ac9e34bce1baa0f665
contacts: reduce git-blame invocations

git-contacts invokes git-blame once for each patch hunk it encounters.
No attempt is made to consolidate invocations for multiple hunks
referencing the same file at the same revision. This can become
expensive quickly.

Reduce the number of git-blame invocations by taking advantage of the
ability to specify multiple -L ranges for a single invocation.

Without this patch, on a randomly chosen range of commits:

  % time git-contacts 25fba78d36be6297^..23c339c0f262aad2 >/dev/null
  real  0m6.142s
  user  0m5.429s
  sys   0m0.356s

With this patch:

  % time git-contacts 25fba78d36be6297^..23c339c0f262aad2 >/dev/null
  real  0m2.285s
  user  0m2.093s
  sys   0m0.165s

Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
contrib/contacts/git-contacts