finish_copy_notes_for_rewrite(): Let caller provide commit message

When copying notes for a rewritten object, the resulting notes commit would have the following hardcoded commit message: Notes added by 'git notes copy' This is obviously bogus when the notes rewriting is performed by 'git commit --amend'. Therefore, let the caller specify an appropriate notes commit message instead of hardcoding it. The above message is used for 'git notes copy', but when calling finish_copy_notes_for_rewrite() from builtin/commit.c, we use the following message instead: Notes added by 'git commit --amend' Cc: Thomas Rast <trast@inf.ethz.ch> Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Johan Herland committed Jun 12, 2013 at 02:12 UTC 80a14665b199a0ccacceb095e3a8bfc4f1e8645e
3 files changed +7 -6
builtin.h
+1 -1
@@ -36,7 +36,7 @@ struct notes_rewrite_cfg {
36 struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd);
37 int copy_note_for_rewrite(struct notes_rewrite_cfg *c,
38 const unsigned char *from_obj, const unsigned char *to_obj);
39 -void finish_copy_notes_for_rewrite(struct notes_rewrite_cfg *c);
39 +void finish_copy_notes_for_rewrite(struct notes_rewrite_cfg *c, const char *msg);
40
41 extern int textconv_object(const char *path, unsigned mode, const unsigned char *sha1, int sha1_valid, char **buf, unsigned long *buf_size);
42
builtin/commit.c
+1 -1
@@ -1591,7 +1591,7 @@ int cmd_commit(int argc, const char **argv, const char *prefix)
1591 if (cfg) {
1592 /* we are amending, so current_head is not NULL */
1593 copy_note_for_rewrite(cfg, current_head->object.sha1, sha1);
1594 - finish_copy_notes_for_rewrite(cfg);
1594 + finish_copy_notes_for_rewrite(cfg, "Notes added by 'git commit --amend'");
1595 }
1596 run_rewrite_hook(current_head->object.sha1, sha1);
1597 }
builtin/notes.c
+5 -4
@@ -403,11 +403,11 @@ int copy_note_for_rewrite(struct notes_rewrite_cfg *c,
403 return ret;
404 }
405
406 -void finish_copy_notes_for_rewrite(struct notes_rewrite_cfg *c)
406 +void finish_copy_notes_for_rewrite(struct notes_rewrite_cfg *c, const char *msg)
407 {
408 int i;
409 for (i = 0; c->trees[i]; i++) {
410 - commit_notes(c->trees[i], "Notes added by 'git notes copy'");
410 + commit_notes(c->trees[i], msg);
411 free_notes(c->trees[i]);
412 }
413 free(c->trees);
@@ -420,6 +420,7 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
420 struct notes_rewrite_cfg *c = NULL;
421 struct notes_tree *t = NULL;
422 int ret = 0;
423 + const char *msg = "Notes added by 'git notes copy'";
424
425 if (rewrite_cmd) {
426 c = init_copy_notes_for_rewrite(rewrite_cmd);
@@ -461,10 +462,10 @@ static int notes_copy_from_stdin(int force, const char *rewrite_cmd)
462 }
463
464 if (!rewrite_cmd) {
464 - commit_notes(t, "Notes added by 'git notes copy'");
465 + commit_notes(t, msg);
466 free_notes(t);
467 } else {
467 - finish_copy_notes_for_rewrite(c);
468 + finish_copy_notes_for_rewrite(c, msg);
469 }
470 return ret;
471 }