diff options
Diffstat (limited to 'third_party/git/notes-utils.h')
-rw-r--r-- | third_party/git/notes-utils.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/third_party/git/notes-utils.h b/third_party/git/notes-utils.h new file mode 100644 index 000000000000..d9b3c09eaf09 --- /dev/null +++ b/third_party/git/notes-utils.h @@ -0,0 +1,55 @@ +#ifndef NOTES_UTILS_H +#define NOTES_UTILS_H + +#include "notes.h" + +struct commit_list; +struct object_id; +struct repository; + +/* + * Create new notes commit from the given notes tree + * + * Properties of the created commit: + * - tree: the result of converting t to a tree object with write_notes_tree(). + * - parents: the given parents OR (if NULL) the commit referenced by t->ref. + * - author/committer: the default determined by commit_tree(). + * - commit message: msg + * + * The resulting commit SHA1 is stored in result_sha1. + */ +void create_notes_commit(struct repository *r, + struct notes_tree *t, + struct commit_list *parents, + const char *msg, size_t msg_len, + struct object_id *result_oid); + +void commit_notes(struct repository *r, struct notes_tree *t, const char *msg); + +enum notes_merge_strategy { + NOTES_MERGE_RESOLVE_MANUAL = 0, + NOTES_MERGE_RESOLVE_OURS, + NOTES_MERGE_RESOLVE_THEIRS, + NOTES_MERGE_RESOLVE_UNION, + NOTES_MERGE_RESOLVE_CAT_SORT_UNIQ +}; + +struct notes_rewrite_cfg { + struct notes_tree **trees; + const char *cmd; + int enabled; + combine_notes_fn combine; + struct string_list *refs; + int refs_from_env; + int mode_from_env; +}; + +int parse_notes_merge_strategy(const char *v, enum notes_merge_strategy *s); +struct notes_rewrite_cfg *init_copy_notes_for_rewrite(const char *cmd); +int copy_note_for_rewrite(struct notes_rewrite_cfg *c, + const struct object_id *from_obj, const struct object_id *to_obj); +void finish_copy_notes_for_rewrite(struct repository *r, + struct notes_rewrite_cfg *c, + const char *msg); + +#endif |