Subversion Migration

From GNUstepWiki

Subversion Documentation

Subversion is quick to learn coming from CVS, but there are differences. Below are links to help people learn subversion and understand how it differs from CVS.

Proposed Layout

The following directories will be the toplevel layout of the individual "repositories". Under each of these directories there will be at least three top-level directories: tags/, branches/, and trunk/.



/modules/dev-apps ( svn:externals mapping to old dev-apps )
/modules/core     ( svn:externals mapping to old core )
/modules/dev-libs ( svn:externals mapping to old dev-libs )
/modules/usr-apps ( svn:externals mapping to old usr-apps )

/tests/test ( this is legacy, and can be deleted after conversion )



Subversion includes a nifty feature called externals. What this enables you to do is specify metadata on a directory such that when it is checked out it will check out any other subversion repository into a subdirectory (and you can specify a certain revision if you like). This means you can set up a /modules/core which checks out /libs/gui/trunk /libs/base/trunk /libs/back/trunk and /tools/make/trunk into the subdirectories gui, base, back, and make respectively. Projects like Startup would also benefit immensely from this feature while keeping a clean separation between all different actual projects.

The Subversion book has a chapter on this feature here.