Switch from CVS to Subversion

From Event-B
Jump to navigationJump to search

The switch from CVS to Subversion took place Friday 13 March 2009. Before this date, all source code used to be managed in a CVS repository hosted by SourceForge. After this date, source code is managed in a Subversion repository also hosted by SourceForge.

How to Access the Repository from Eclipse

To access the subversion repository, you need to install a Subversion plug-in into your Eclipse development platform. There is currently two plug-ins that are known to work quite well: Subclipse and Subversive. We recommend to use Sublipse. It would be a bad idea to install both plug-ins in the same platform as they conflict with each other.

The repository itself is available at URL https://rodin-b-sharp.svn.sourceforge.net/svnroot/rodin-b-sharp.

Where Are my Modules

Just after the switch from CVS to Subversion, certain CVS modules have been moved to clean up the root of the repository. The modules below have been moved to the new RodinCore directory:

fr.systerel.explorer
fr.systerel.explorer.tests
org.eventb.core
org.eventb.core.ast
org.eventb.core.ast.tests
org.eventb.core.seqprover
org.eventb.core.seqprover.doc.isv
org.eventb.core.seqprover.tests
org.eventb.core.tests
org.eventb.doc.user
org.eventb.eventBKeyboard
org.eventb.eventBKeyboard.tests
org.eventb.ide
org.eventb.ide-feature
org.eventb.pp
org.eventb.pp.tests
org.eventb.pp.ui
org.eventb.pptrans
org.eventb.pptrans.tests
org.eventb.ui
org.eventb.ui.icons
org.eventb.ui.tests
org.rodinp
org.rodinp-feature
org.rodinp.core
org.rodinp.core.tests
org.rodinp.platform
org.rodinp.platform-feature
org.rodinp.releng

and the following modules have been moved to the new XProver directory:

org.eventb.xprover.tptp.core
org.eventb.xprover.tptp.core.tests
org.eventb.xprover.tptp.spass.core
org.eventb.xprover.tptp.spass.core.linux
org.eventb.xprover.tptp.spass.core.macosx
org.eventb.xprover.tptp.spass.core.tests
org.eventb.xprover.tptp.spass.ui
org.eventb.xprover.tptp.ui

and the following modules have been moved to the new AnimB directory:

org.animb.animation.stubclient
org.animb.core
org.animb.core.tests
org.animb.eclipseBuilder
org.animb.eclipseBuilder.test
org.animb.eventsexecutor
org.animb.export
org.animb.feature
org.animb.feature-def
org.animb.history
org.animb.ipConnectionTest
org.animb.ipconnection
org.animb.ipconnectionplugin
org.animb.observer
org.animb.server
org.animb.serverplugin
org.animb.site
org.animb.ui.utils
org.animb.updatesite
org.animb.valuation

and the following modules have been moved to the new Brama directory:

com.clearsy.animator.core
com.clearsy.animator.core.eclipseBuilder
com.clearsy.predicateB
com.clearsy.predicateB.tests

How to Move from CVS to Subversion

The simpler is to create a second workspace on your computer and to launch two Eclipse programs, one on each workspace. For each project checked out in the CVS workspace, just checkout the same project in the Subversion workspace.

If you have some yet uncommitted changes in your CVS workspace, you can select the files and drag and drop them in the appropriate place in the Subversion workspace. Alternatively, you can create a patch. For that, select the project(s) that contain uncommitted changes, then select Team > Create Patch... from the context menu and follow the wizard. Then, in the Subversion workspace, select Team > Apply Patch... to apply the patch.

Procedure Used for Moving CVS History to Subversion

When switching from CVS to Subversion, we made our best to keep the history of all files. We followed this procedure:

  1. retrieve a copy of the whole CVS repository into directory cvs
  2. launch commands
  3. cvs2svn -q --dumpfile=svndump --force-tag=GMF2 --encoding=utf-8 --encoding=latin1 cvs svndumpfilter exclude CVSROOT < svndump > svndump2 gzip -9 svndump2
  4. upload file svndump2.gz to SourceForge
  5. start a shell service on SourceForge and type the following commands
  6. adminrepo --checkout svn zcat svndump2.gz | svnadmin load /svnroot/rodin-b-sharp adminrepo --save svn

Note that the filtering on CVSROOT didn't seem to work as expected: this directory still occurred in the SVN trunk and had to be removed manually.