[RFC] Meta-branch
Robert Collins
robertc at robertcollins.net
Wed Feb 22 04:04:59 GMT 2006
On Tue, 2006-02-21 at 21:56 -0600, John Arbash Meinel wrote:
> Robert Collins wrote:
> > On Tue, 2006-02-21 at 21:32 -0600, John Arbash Meinel wrote:
> >> Robert Collins wrote:
> >>> The discussion about tags and earlier about the location of subtree-root
> >>> branch storage/branches seems to coalesce into a single prerequisite
> >>> feature: a branch of data about the users branch. This data should
> >>> propogate, and people should be able to record decisions in it without
> >>> 'committing' to their source code.
> >>>
> >>> So heres a proposal for a meta-branch feature.
> >>>
> >>> A meta branch records data about a branch. It coexists with the branch
> >>> at the same URL and has:
> >>> * Its own 'meta-last-revision'
> >>> * One weave/knit for each thing it records, today that will be 'tags'
> >>> and 'subtree-locations' and stored in the repository
> >>> as .bzr/repository/tags and .bzr/repository/subtree-locations
> >> My concern is that 'tags' should actually be a branch property, not a
> >> repository property.
> >
> > Its a branch property delta compressed by the repository.
> >
> >> Otherwise, how do I give "release-0.7" to both libfoo and progbaz.
> >
> > Indeed, that was a problem with the initial proposals.
> >
> >> If we make them a repository property, I always have to fully qualify my
> >> tag names "libfoo-release-0.7"
> >>
> >> It is workable, but since I have to have the environment of a branch in
> >> order to 'get', it seems unnecessary.
> >
> > you would not need to in this proposal: the meta-last-revision marker
> > gives you a unique, branch qualified, copy of the tags - you will not
> > see other branches tags.
>
> How do I update the meta-last-revision marker without updating my branch?
There are two operations here, one is changing metadata locally, one is
sucking in some other branches metadata.
'bzr edit-tags' would commit a new tags file, thus updating the
meta-last-revision marker.
'bzr pull-tags' or whatever UI we want to have would pull in a different
branches tags *without* bringing in the branch content[it might fetch
the data, but it would not alter the branch revision-history or working
tree at all].
And naturally 'pull' and 'merge' and 'commit' and 'push' would propogate
the meta-branch too.
Generalising that we could have a 'bzr pull-meta' command, or 'pull
--meta-only'. I think though that the primary use for these things is
for the user to change a meta property locally, not for sucking tags etc
between branches, so its not a common operation.
> How do I set tags in remote branches without updating them? (It might be
> a simple as 'bzr push' checks both last-revision markers, and pushes
> either one if it is out of date).
Right. I would expect 'push' to push both branch and meta-branch.
> It seems a little bit iffy. But we are going to be doing the same thing
> with inventory.weave the first time repositories land.
.
> ...
>
> > Its entirely possible that we want different merge tweaks on the two
> > files in the meta-branch, but as they are both versioned I don't see it
> > being really relevant to the meta-branch proposal per se.
> >
> >> So, I'm not 100%, but I wouldn't give you a minus on it.
> >
> > Rob
> >
>
> I agree. If we can work out how meta-information propagates when actual
> information hasn't changed, I think we have a good solution here.
Ok, given that context its trivial:
push
pull
commit with binding
all need to compare both the branch.last_revision and
branch.meta_last_revision/branch.meta.last_revision properties.
Easy :).
Rob
--
GPG key available at: <http://www.robertcollins.net/keys.txt>.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060222/10291354/attachment.pgp
More information about the bazaar
mailing list