Speed up git notes lookup
authorJohannes Schindelin <Johannes.Schindelin@gmx.de>
Fri, 9 Oct 2009 10:21:59 +0000 (12:21 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 20 Oct 2009 01:59:42 +0000 (18:59 -0700)
commitfd53c9eb445815696bf84c4701b9af73b5d7f50d
tree4c47a347b4770417810b287c7f30ac39868e6cc8
parent65d9fb487f36d4a12a169dc18cbbb5225337c085
Speed up git notes lookup

To avoid looking up each and every commit in the notes ref's tree
object, which is very expensive, speed things up by slurping the tree
object's contents into a hash_map.

The idea for the hashmap singleton is from David Reiss, initial
benchmarking by Jeff King.

Note: the implementation allows for arbitrary entries in the notes
tree object, ignoring those that do not reference a valid object.  This
allows you to annotate arbitrary branches, or objects.

This patch has been improved by the following contributions:
- Junio C Hamano: fixed an obvious error in initialize_hash_map()

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
notes.c