|
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
[Prev in Thread] | Current Thread | [Next in Thread] |