diff options
author | Johan Herland <johan@herland.net> | 2013-06-12 02:13:01 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-06-12 10:38:13 -0700 |
commit | bf9a05ba46a9d464424d22482aaa54abdd28b77d (patch) | |
tree | 59c7c71f81859fc4d11176f02f810f80b22f55d7 /notes-utils.c | |
parent | 49c2470400bbb695b953abeb4e6737be747317af (diff) | |
download | git-bf9a05ba46a9d464424d22482aaa54abdd28b77d.tar.gz |
Move create_notes_commit() from notes-merge.c into notes-utils.c
create_notes_commit() is needed by both the notes-merge code, and by
commit_notes() in notes-utils. Since it is generally useful, and not
bound to the notes-merge machinery, we move it from (the more specific)
notes-merge to (the more general) notes-utils.
Signed-off-by: Johan Herland <johan@herland.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'notes-utils.c')
-rw-r--r-- | notes-utils.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/notes-utils.c b/notes-utils.c index 5c9c976b80..9107c379d9 100644 --- a/notes-utils.c +++ b/notes-utils.c @@ -2,7 +2,32 @@ #include "commit.h" #include "refs.h" #include "notes-utils.h" -#include "notes-merge.h" /* for create_notes_commit() */ + +void create_notes_commit(struct notes_tree *t, struct commit_list *parents, + const struct strbuf *msg, unsigned char *result_sha1) +{ + unsigned char tree_sha1[20]; + + assert(t->initialized); + + if (write_notes_tree(t, tree_sha1)) + die("Failed to write notes tree to database"); + + if (!parents) { + /* Deduce parent commit from t->ref */ + unsigned char parent_sha1[20]; + if (!read_ref(t->ref, parent_sha1)) { + struct commit *parent = lookup_commit(parent_sha1); + if (!parent || parse_commit(parent)) + die("Failed to find/parse commit %s", t->ref); + commit_list_insert(parent, &parents); + } + /* else: t->ref points to nothing, assume root/orphan commit */ + } + + if (commit_tree(msg, tree_sha1, parents, result_sha1, NULL, NULL)) + die("Failed to commit notes tree to database"); +} void commit_notes(struct notes_tree *t, const char *msg) { |