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:

committed by
Junio C Hamano

parent
d8a9480384
commit
1ee1e43df3
@ -769,6 +769,7 @@ static int remove_cmd(int argc, const char **argv, const char *prefix)
|
||||
const char *object_ref;
|
||||
struct notes_tree *t;
|
||||
unsigned char object[20];
|
||||
int retval;
|
||||
|
||||
argc = parse_options(argc, argv, prefix, options,
|
||||
git_notes_remove_usage, 0);
|
||||
@ -785,12 +786,17 @@ static int remove_cmd(int argc, const char **argv, const char *prefix)
|
||||
|
||||
t = init_notes_check("remove");
|
||||
|
||||
fprintf(stderr, "Removing note for object %s\n", sha1_to_hex(object));
|
||||
remove_note(t, object);
|
||||
retval = remove_note(t, object);
|
||||
if (retval)
|
||||
fprintf(stderr, "Object %s has no note\n", sha1_to_hex(object));
|
||||
else {
|
||||
fprintf(stderr, "Removing note for object %s\n",
|
||||
sha1_to_hex(object));
|
||||
|
||||
commit_notes(t, "Notes removed by 'git notes remove'");
|
||||
commit_notes(t, "Notes removed by 'git notes remove'");
|
||||
}
|
||||
free_notes(t);
|
||||
return 0;
|
||||
return retval;
|
||||
}
|
||||
|
||||
static int prune(int argc, const char **argv, const char *prefix)
|
||||
|
Reference in New Issue
Block a user