aboutsummaryrefslogtreecommitdiff
path: root/notes.h
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2010-03-24 16:26:43 -0700
committerJunio C Hamano <gitster@pobox.com>2010-03-24 16:26:43 -0700
commita86ed83cce0fc0b9a9fe4e17ac1bf4f719028d20 (patch)
treeb601185c28e5ea4f4a624debe01427465147650c /notes.h
parentb6a7a06aa6f083f21b0fca2558c737324eda1602 (diff)
parent66d681998411e8e5034080d5267a5e0f6cdc0c17 (diff)
downloadgit-a86ed83cce0fc0b9a9fe4e17ac1bf4f719028d20.tar.gz
git-a86ed83cce0fc0b9a9fe4e17ac1bf4f719028d20.tar.xz
Merge branch 'tr/notes-display'
* tr/notes-display: git-notes(1): add a section about the meaning of history notes: track whether notes_trees were changed at all notes: add shorthand --ref to override GIT_NOTES_REF commit --amend: copy notes to the new commit rebase: support automatic notes copying notes: implement helpers needed for note copying during rewrite notes: implement 'git notes copy --stdin' rebase -i: invoke post-rewrite hook rebase: invoke post-rewrite hook commit --amend: invoke post-rewrite hook Documentation: document post-rewrite hook Support showing notes from more than one notes tree test-lib: unset GIT_NOTES_REF to stop it from influencing tests Conflicts: git-am.sh refs.c
Diffstat (limited to 'notes.h')
-rw-r--r--notes.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/notes.h b/notes.h
index bad03ccab..ee65bd1a2 100644
--- a/notes.h
+++ b/notes.h
@@ -40,6 +40,7 @@ extern struct notes_tree {
char *ref;
combine_notes_fn *combine_notes;
int initialized;
+ int dirty;
} default_notes_tree;
/*
@@ -100,6 +101,15 @@ const unsigned char *get_note(struct notes_tree *t,
const unsigned char *object_sha1);
/*
+ * Copy a note from one object to another in the given notes_tree.
+ *
+ * Fails if the to_obj already has a note unless 'force' is true.
+ */
+int copy_note(struct notes_tree *t,
+ const unsigned char *from_obj, const unsigned char *to_obj,
+ int force, combine_notes_fn combine_fn);
+
+/*
* Flags controlling behaviour of for_each_note()
*
* Default behaviour of for_each_note() is to traverse every single note object
@@ -198,4 +208,59 @@ void free_notes(struct notes_tree *t);
void format_note(struct notes_tree *t, const unsigned char *object_sha1,
struct strbuf *sb, const char *output_encoding, int flags);
+
+struct string_list;
+
+struct display_notes_opt {
+ int suppress_default_notes:1;
+ struct string_list *extra_notes_refs;
+};
+
+/*
+ * Load the notes machinery for displaying several notes trees.
+ *
+ * If 'opt' is not NULL, then it specifies additional settings for the
+ * displaying:
+ *
+ * - suppress_default_notes indicates that the notes from
+ * core.notesRef and notes.displayRef should not be loaded.
+ *
+ * - extra_notes_refs may contain a list of globs (in the same style
+ * as notes.displayRef) where notes should be loaded from.
+ */
+void init_display_notes(struct display_notes_opt *opt);
+
+/*
+ * Append notes for the given 'object_sha1' from all trees set up by
+ * init_display_notes() to 'sb'. The 'flags' are a bitwise
+ * combination of
+ *
+ * - NOTES_SHOW_HEADER: add a 'Notes (refname):' header
+ *
+ * - NOTES_INDENT: indent the notes by 4 places
+ *
+ * You *must* call init_display_notes() before using this function.
+ */
+void format_display_notes(const unsigned char *object_sha1,
+ struct strbuf *sb, const char *output_encoding, int flags);
+
+/*
+ * Load the notes tree from each ref listed in 'refs'. The output is
+ * an array of notes_tree*, terminated by a NULL.
+ */
+struct notes_tree **load_notes_trees(struct string_list *refs);
+
+/*
+ * Add all refs that match 'glob' to the 'list'.
+ */
+void string_list_add_refs_by_glob(struct string_list *list, const char *glob);
+
+/*
+ * Add all refs from a colon-separated glob list 'globs' to the end of
+ * 'list'. Empty components are ignored. This helper is used to
+ * parse GIT_NOTES_DISPLAY_REF style environment variables.
+ */
+void string_list_add_refs_from_colon_sep(struct string_list *list,
+ const char *globs);
+
#endif