RE: Migration to SVN
From: Giulio Troccoli <Giulio.Troccoli_at_uk.linedata.com>
Date: Thu, 21 Jan 2010 09:20:57 +0000
Linedata Services (UK) Ltd
> From: barveaniketan_at_gmail.com [mailto:barveaniketan_at_gmail.com]
First of all, we were happy to lose the history of the files. It's not completely lost as CMS keeps the log at the top of each file. What I mean is that we accepted the fact that it would not be possible to get back to an old generation of a file. If you want to do that I think it's still possible to migrate to Subversion but I don't know how and it's probably too much effort.
Roughly this is what we did.
We had 3 or 4 versions of our application. For each versions we had two streams: dev (used by developers) and cand (use by testers). Changes were merged from dev to cand by testers to produce a candidate release.
Each new version was created copying the previous version cand stream into both the new version dev and cand streams. Then the changes that were in the previous dev but not yet in the previous cand were merged into the new dev. This could be summirise by something like the following:
- copy version A cand into version A+1 dev
Based on the above I came up with a process to migrate from CMS to SVN. Note that we wanted to have a one-way merge and copy, so instead of copying A cand to A+1 cand, we copied A+1 dev to A+1 cand, which is effectively the same but result in all changes to a cand coming from a dev.
Another aspect we were interested in was to keep a chain of history between the various versions. We wanted each file to be linked to itself in the previous versions. This is natural in Subversion but not so much in CMS (in my view).
The main idea was to create the first version with normal import, and the subsequent ones as copy of the previous versions plus what has changed. This will save a lot of disk space (as copies are cheap in Subversion) and create that link between versions that we wanted.
For simplicity let's call the versions 1, 2, 3 and 4. The cand strean on version 1 in CMS will be called CMS-1-cand (and similarly for the dev stream and for SVN). The process went something like this:
- extract CMS-1-cand and import it into SVN-1-dev
At this point the first version, both dev and cand stream, is the same in CMS and SVN. For every other version it works in a similar way, like this, so let's use x and y as previous and next version.
- copy (using Subversion) SVN-x-dev in SVN-y-dev
To make this easier and quicker we made sure that as few changes as possible were in dev but not in cand. We used are track system for that, and since it's an in-house one, I can't really help you with that.
Finally, sorry for the big delay.
This is an archived mail posted to the Subversion Users mailing list.