monotone-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Monotone-devel] branch representation


From: Zbynek Winkler
Subject: Re: [Monotone-devel] branch representation
Date: Thu, 27 Oct 2005 12:31:45 +0200
User-agent: Debian Thunderbird 1.0.2 (X11/20050602)

Nathaniel Smith wrote:

So the idea is: what if we got rid of branch certs, and put a branch
field inside the revision object?  So each revision is uniquely,
irrevocably, in a single branch.  So each revision is not just a
snapshot, but a snapshot with a purpose attached.  And instead of
automatically putting a branch cert on at commit time, you put a
"yeah, this is good" cert on (since the rev already has a purpose
built in, your vague affirmation of goodness can be assumed to match
that).
Hmm. I think we first need to decide what *exactly* branches are before evaluating ideas about changing them.

The first thing that comes to mind is

Are branches development lines or just a way to group arbitrary otherwise unrelated groups of revisions?

I think that the term "branch" comes with some kind of expectation. Almost all VCS use the term and understanding is that it usually represents a development line and not a bag of things. Do not get me wrong, I think it is really useful to have "bag of things" but please let's not call them branches because it is IMHO unnecessary confusion for anyone who has ever used other VCS. Just look at these pictures
http://www.mozilla.org/roadmap/branching-2005-01-25.png
http://www.mozilla.org/roadmap/branching-2002-12-26.png
Everyone wants to talk about stuff like "branch point" and draw the the branches as lines of development. And it is just too hard when your VCS does not know these terms or (worse) uses them to mean something completely different.

Yeah, this is a really weird idea.  It's weird enough that I have
trouble really imagining it to evaluate it.  (And enough that I
deserve to be hit repeatedly with a stick for bringing it up when
we're trying to _stabilize_ things...)

Anyway, this wouldn't help with things that people find
counter-intuitive like, "this branch is discontinuous", or "this
branch has multiple branch points", or "this branch has multiple
heads".  It would help with the confusion about revs being in multiple
branches, and generally reduce the weirdness we have all the time
where we have to assume all revs have branch certs on them, and try
and guess an appropriate branch name given a revision, and so on -- it
seems like the code and users both want to think of branch certs as at
least somewhat special.  I'm thinking of guess_branch, and update's
tricky handling of branches, and netsync filtering by branch...
Yes, at least I think that branches are somewhat special and that the general idea of grouping revisions in to a bag can be done by just an arbitrary cert.

It might make doing trust stuff significantly easier.

I agree. I think it would have clearer model this way. I would really like the fact that you need to create a new revision when moving some changes between branches... because in fact, I see adding new code to a branch as a new development and not as attachment of some arbitrary meta data. It would support the "line of development" thing much better.

Zbynek

--
http://zw.matfyz.cz/     http://robotika.cz/
Faculty of Mathematics and Physics, Charles University, Prague, Czech Republic





reply via email to

[Prev in Thread] Current Thread [Next in Thread]