From: Jon Seymour <jon.seymour@gmail.com>
To: Jeff King <peff@peff.net>
Cc: Junio C Hamano <gitster@pobox.com>,
Johan Herland <johan@herland.net>,
git@vger.kernel.org
Subject: Re: A generalization of git notes from blobs to trees - git metadata?
Date: Sun, 7 Feb 2010 16:36:59 +1100 [thread overview]
Message-ID: <2cfc40321002062136q64f832aesd979c9cb22f3612@mail.gmail.com> (raw)
In-Reply-To: <20100207050255.GA17049@coredump.intra.peff.net>
On Sun, Feb 7, 2010 at 4:02 PM, Jeff King <peff@peff.net> wrote:
> On Sat, Feb 06, 2010 at 06:21:37PM -0800, Junio C Hamano wrote:
>
>> Johan Herland <johan@herland.net> writes:
>>
>> > Furthermore, although we currently assume that all note objects are blobs,
>> > someone (who?) has already suggested (as mentioned in the notes TODO list)
>> > that a note object could also be a _tree_ object that can be unpacked/read
>> > to reveal further "sub-notes".
>>
>> I would advice you not to go there. How would you even _merge_ such a
>> thing with other notes attached to the same object? What determines the
>> path in that tree object?
>>
>> Clueless ones can freely make misguided suggestions without thinking
>> things through and make things unnecessarily complex without real gain.
>> You do not have to listen to every one of them.
>
> I think I may have been the one to suggest trees or notes at one point.
> But let me clarify that this is not exactly what the OP is proposing in
> this thread.
>
> My suggestion was that some use cases may have many key/value pairs of
> notes for a single sha1. We basically have two options:
>
> 1. store each in a separate notes ref, with each sha1 mapping to
> a blob. The note "name" is the name of the ref.
>
> 2. store notes in a single notes ref, with each sha1 mapping to a
> tree with named sub-notes. The note "name" is the combination of
> ref-name and tree entry name.
>
So, of course, options (1) and (2) need not be exclusive. Use Option
(1) for different metadata sets and option (2) to partition individual
datasets.
>
> With respect to the idea of storing an arbitrary tree, I agree it is
> probably too complex with respect to merging. In addition, it makes
> things like "git log --format=%N" confusing. I think you would do better
> to simply store a tree sha1 inside the note blob, and callers who were
> interested in the tree contents could then dereference it and examine as
> they saw fit. The only caveat is that you need some way of telling git
> that the referenced trees are reachable and not to be pruned.
>
As I see it, the existing use of notes is a special instance of a more
general metadata capability in which the metadata is constrained to be
a single blob. If notes continued to be constrained in this way, there
is no reason to change anything with respect to its current userspace
behaviour. That said, most of the plumbing which enabled notes could
be generalized to enable the arbitrary tree case [ which admittedly, I
have yet to sell successfully !]
In one sense, there is a sense in the merge issue doesn't exist. When
the maintainer publishes a tag no-one expects to have to deal with
downstream conflicting definitions of the tag. Likewise, if the
maintainer were to publish the /man and /html metadata trees (per my
previous example) for a release tag, anyone who received
/refs/metadata/doc would expect to receive the metadata trees as
published by the maintainer. Anyone who didn't wouldn't have to pull
/refs/metadata/doc.
I can see there are use cases where multiple parties might want to
contribute metadata and I do not currently have a good solution to
that problem, but that is not to say there isn't one - surely it is
just a question of applying a little intellect creatively?
jon.
next prev parent reply other threads:[~2010-02-07 5:37 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-06 13:32 A generalization of git notes from blobs to trees - git metadata? Jon Seymour
2010-02-07 1:36 ` Johan Herland
2010-02-07 2:21 ` Junio C Hamano
2010-02-07 5:02 ` Jeff King
2010-02-07 5:36 ` Jon Seymour [this message]
2010-02-07 9:15 ` Jakub Narebski
2010-02-07 9:41 ` Jon Seymour
2010-02-07 10:15 ` Jon Seymour
2010-02-07 19:33 ` Jeff King
2010-02-07 20:25 ` Junio C Hamano
2010-02-08 2:03 ` Steven E. Harris
2010-02-10 5:09 ` Jeff King
2010-02-10 5:23 ` Junio C Hamano
2010-02-10 5:29 ` Jeff King
2010-02-07 18:48 ` Junio C Hamano
2010-02-07 19:18 ` Jeff King
2010-02-07 22:46 ` Johan Herland
2010-02-07 3:27 ` Jon Seymour
2010-02-07 4:32 ` Jon Seymour
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2cfc40321002062136q64f832aesd979c9cb22f3612@mail.gmail.com \
--to=jon.seymour@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johan@herland.net \
--cc=peff@peff.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).