summaryrefslogtreecommitdiff
path: root/notes.h
blob: 5f2285217e994e1bf6fec2a0fa651a8aff417a93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#ifndef NOTES_H
#define NOTES_H

/*
 * Flags controlling behaviour of notes tree initialization
 *
 * Default behaviour is to initialize the notes tree from the tree object
 * specified by the given (or default) notes ref.
 */
#define NOTES_INIT_EMPTY 1

/*
 * Initialize internal notes tree structure with the notes tree at the given
 * ref. If given ref is NULL, the value of the $GIT_NOTES_REF environment
 * variable is used, and if that is missing, the default notes ref is used
 * ("refs/notes/commits").
 *
 * If you need to re-intialize the internal notes tree structure (e.g. loading
 * from a different notes ref), please first de-initialize the current notes
 * tree by calling free_notes().
 */
void init_notes(const char *notes_ref, int flags);

/* Add the given note object to the internal notes tree structure */
void add_note(const unsigned char *object_sha1,
		const unsigned char *note_sha1);

/* Free (and de-initialize) the internal notes tree structure */
void free_notes(void);

/* Flags controlling how notes are formatted */
#define NOTES_SHOW_HEADER 1
#define NOTES_INDENT 2

/*
 * Fill the given strbuf with the notes associated with the given object.
 *
 * If the internal notes structure is not initialized, it will be auto-
 * initialized to the default value (see documentation for init_notes() above).
 *
 * 'flags' is a bitwise combination of the above formatting flags.
 */
void format_note(const unsigned char *object_sha1, struct strbuf *sb,
		const char *output_encoding, int flags);

#endif