monotone-devel
[Top][All Lists]
Advanced

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

Re: [Monotone-devel] Re: Request for help adding monotone output to cvs2


From: Markus Schiltknecht
Subject: Re: [Monotone-devel] Re: Request for help adding monotone output to cvs2svn
Date: Tue, 18 Sep 2007 12:44:06 +0200
User-agent: Icedove 1.5.0.12 (X11/20070730)

Hi,

Bruce Stephens wrote:
OK, that's probably worth doing.  For repositories which include
imports, I suspect many of the tags will require a branch.  I guess it
would depend on how one uses CVS tags as to whether it's often the
case that a branch is unnecessary.  (At work we quite often (more
often than I'd like) move CVS tags: we tag the repository, but as
release preparation progresses we move tags on selected files as bugs
get fixed.  It's a part of the change control procedure.)

That's certainly a problem for monotone. Not only for CVS import, but also when importing subversion repositories. Those also don't really have tags (in the monotone sense, i.e. on exactly one revision, which cannot change underneath).

This is one of the things monotone is different. Back at the time when I had to decide to use cvs2svn or not, Michael et al proposed to use subversion's dump format as a general purpose base format. That's where I've just rolled my eyes and went away. Maybe I should have been more patient in explaining the differences.

(I don't know whether monotone makes the same distinction.)

Monotone stores revisions in a DAG, and a revision is in a branch b if
it has a branch cert for b attached to it.  A revision may be in any
number of branches (including none).  Using the normal interface it's
tricky to create a branchless revision; I'm not sure whether the
automate feature makes it easier---probably.  Unlike git, it's normal
for a single branch to fork.

So I'd guess a natural way to do it in monotone is to have everything
on branches, but for tags where you need to, just fork off the branch.

Oh, darn, that doesn't work, because the tagged revision then becomes
a head of the branch.  OK, it'll need to be a separate branch, I
guess.

Right. For every tag and branchpoint which cannot be matched to exactly only one revision, you'll have to add an artificial revisions which you can tag. (AFAICT, git allows such an artificial revision to have multiple parents, monotone does only allow two parentsn. So for monotone, you'll have to add multiple artificial revisions).

For branchpoints, it's quite clear that such artificial revisions for those can go into the branch they initiate. But for tags, you'll probably have to create an 'artificial' branch, or not assign any branch cert to those revisions.

(In git it's normal for a branch to contain divergence in its past,

Uh.. what do you mean by that?

Regards

Markus





reply via email to

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