On Tue, May 8, 2012 at 11:11 PM, Jeff King <peff@xxxxxxxx> wrote: > On Tue, May 08, 2012 at 08:14:30PM +0700, Nguyen Thai Ngoc Duy wrote: > >> It may be useful for scripting, and looks nice. Though may be not >> worth adding if there are no actual users. > > There can be many notes refs. So I think to do this right, you would > want something like: > > foo^{note:bar} > > which would look in refs/notes/bar (this logic is handled by > expand_notes_ref). And "foo^{note}" would be a synonym for the default > note ref. Right. Thanks. >> @@ -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 > > The notes code is relatively expensive to initialize, with the > assumption that the effort will be amortized across multiple lookups > (which are made faster). Is it possible to cache this initialized notes > structure in case many lookups are done? No idea. I have never worked/used notes until yesterday (and these patches were the result). I will look into it. > It may not be as important as it used to be, either. I think more recent > versions of the code will progressively load the notes tree rather than > filling it all in at initialization time. But it has been a while since > I've done anything with notes. -- Duy -- 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