diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-03-24 16:26:43 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-03-24 16:26:43 -0700 |
commit | a86ed83cce0fc0b9a9fe4e17ac1bf4f719028d20 (patch) | |
tree | b601185c28e5ea4f4a624debe01427465147650c /notes.h | |
parent | b6a7a06aa6f083f21b0fca2558c737324eda1602 (diff) | |
parent | 66d681998411e8e5034080d5267a5e0f6cdc0c17 (diff) | |
download | git-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.h | 65 |
1 files changed, 65 insertions, 0 deletions
@@ -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 |