Code

notes.h/c: Allow combine_notes functions to remove notes
authorJohan Herland <johan@herland.net>
Tue, 9 Nov 2010 21:49:41 +0000 (22:49 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Nov 2010 18:25:52 +0000 (10:25 -0800)
commite2656c82fd836a3d410230c98f6a725368f15642
tree340dfa322efafa49212b5cc9ba2f157e76614f9a
parenta5cdebea55d53406e117d9a1fd4cc316ef036553
notes.h/c: Allow combine_notes functions to remove notes

Allow combine_notes functions to request that a note be removed, by setting
the resulting note SHA1 to null_sha1 (0000000...).

For consistency, also teach note_tree_insert() to skip insertion of an empty
note (a note with entry->val_sha1 equal to null_sha1) when there is no note
to combine it with.

In general, an empty note (null_sha1) is treated identically to no note at
all, but when adding an empty note where there already exists a non-empty
note, we allow the combine_notes function to potentially record a new/changed
note. Document this behaviour, and clearly specify how combine_notes functions
are expected to handle null_sha1 in input.

Before this patch, storing null_sha1s in the notes tree were silently allowed,
causing an invalid notes tree (referring to blobs with null_sha1) to be
produced by write_notes_tree().

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
notes.c
notes.h