notes: Don't create (empty) commit when removing non-existing notes

Extend remove_note() in the notes API to return whether or not a note was
actually removed. Use this in 'git notes remove' to skip the creation of
a notes commit when no notes were actually removed.

Also add a test illustrating the change in behavior.

Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Johan Herland
2010-08-31 17:56:50 +02:00
committed by Junio C Hamano
parent d8a9480384
commit 1ee1e43df3
4 changed files with 30 additions and 9 deletions

View File

@ -89,8 +89,10 @@ void add_note(struct notes_tree *t, const unsigned char *object_sha1,
* IMPORTANT: The changes made by remove_note() to the given notes_tree
* structure are not persistent until a subsequent call to write_notes_tree()
* returns zero.
*
* Return 0 if a note was removed; 1 if there was no note to remove.
*/
void remove_note(struct notes_tree *t, const unsigned char *object_sha1);
int remove_note(struct notes_tree *t, const unsigned char *object_sha1);
/*
* Get the note object SHA1 containing the note data for the given object