Merge branch 'jk/fewer-pack-rescan'
commit79bafd23a82a883ab054c9fcaf1e3d3bea57e4b9
authorJunio C Hamano <gitster@pobox.com>
Wed, 6 Dec 2017 17:23:42 +0000 (6 09:23 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 6 Dec 2017 17:23:42 +0000 (6 09:23 -0800)
tree6ce68f30cbf2b36bdf62ef2177deca278e1a378f
parent4ca10aa8cc21178dfb9d4d84afb9a69fbc97634c
parent87b5e236a14d4783b063041588c2f77f3cc6ee89
Merge branch 'jk/fewer-pack-rescan'

Internaly we use 0{40} as a placeholder object name to signal the
codepath that there is no such object (e.g. the fast-forward check
while "git fetch" stores a new remote-tracking ref says "we know
there is no 'old' thing pointed at by the ref, as we are creating
it anew" by passing 0{40} for the 'old' side), and expect that a
codepath to locate an in-core object to return NULL as a sign that
the object does not exist.  A look-up for an object that does not
exist however is quite costly with a repository with large number
of packfiles.  This access pattern has been optimized.

* jk/fewer-pack-rescan:
  sha1_file: fast-path null sha1 as a missing object
  everything_local: use "quick" object existence check
  p5551: add a script to test fetch pack-dir rescans
  t/perf/lib-pack: use fast-import checkpoint to create packs
  p5550: factor out nonsense-pack creation
fetch-pack.c
sha1_file.c