Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- It may be useful for scripting, and looks nice. Though may be not worth adding if there are no actual users. Documentation/revisions.txt | 1 + sha1_name.c | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 1 deletions(-) diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt index 1725661..5a671fe 100644 --- a/Documentation/revisions.txt +++ b/Documentation/revisions.txt @@ -114,6 +114,7 @@ the '$GIT_DIR/refs' directory or from the '$GIT_DIR/packed-refs' file. object of that type is found or the object cannot be dereferenced anymore (in which case, barf). '<rev>{caret}0' is a short-hand for '<rev>{caret}\{commit\}'. + A special type "note" can be used to return the note object. '<rev>{caret}\{\}', e.g. 'v0.99.8{caret}\{\}':: A suffix '{caret}' followed by an empty brace pair diff --git a/sha1_name.c b/sha1_name.c index c633113..02d28df 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -6,6 +6,7 @@ #include "tree-walk.h" #include "refs.h" #include "remote.h" +#include "notes.h" static int get_sha1_oneline(const char *, unsigned char *, struct commit_list *); @@ -473,7 +474,19 @@ static int peel_onion(const char *name, int len, unsigned char *sha1) expected_type = OBJ_NONE; else if (sp[0] == '/') expected_type = OBJ_COMMIT; - else + else if (!strncmp("note}", sp, 5)) { + const unsigned char *note; + struct notes_tree t; + if (get_sha1_1(name, sp - name - 2, outer)) + return -1; + memset(&t, 0, sizeof(t)); + init_notes(&t, NULL, NULL, 0); + note = get_note(&t, outer); + if (note) + hashcpy(sha1, note); + free_notes(&t); + return note ? 0 : -1; + } else return -1; if (get_sha1_1(name, sp - name - 2, outer)) -- 1.7.8.36.g69ee2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html