[RFC] Meta-branch

John Arbash Meinel john at arbash-meinel.com
Wed Feb 22 04:19:14 GMT 2006


Robert Collins wrote:
> 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
> 

+1 from me.

John
=:->


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 254 bytes
Desc: OpenPGP digital signature
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20060221/3c2a1e5a/attachment.pgp 


More information about the bazaar mailing list