DataNucleus uses Subversion (SVN) for housing its source code. The DataNucleus SVN repository is hosted by SourceForge. You can check out from the SVN repository using
Read-Only :
svn checkout svn://svn.code.sf.net/p/datanucleus/code/ datanucleus-code
Read-Write :
svn checkout --username={your-sf-login} svn+ssh://{your-sf-login}@svn.code.sf.net/p/datanucleus/code/ datanucleus-code
Please note that this will check out ALL code and all branches. What would be better is to check out "trunk" of all plugins that you are interested in.
The SVN repository is also browsable online. At the top level you will find
platform/ <- Products and plugins test/ <- End-to-end testing tools/ <- Add on tools (Maven, Eclipse etc) documentation/ <- Docs samples/ <- Samples, tutorials etc
The "platform" directory contains all source code for the plugins comprising the different DataNucleus products. They are laid out as follows. Please note that not all plugins are included here, this is simply to give an idea of the layout.
platform/
accessplatform/ <- AccessPlatform "product" bundle process
trunk/
branches/
core/ <- "Core" plugin, the basis for all datastore access
trunk/
branches/
cache/ <- Level 2 caching plugin
trunk/
branches/
api.jdo/ <- JDO API plugin
trunk/
branches/
api.jpa/ <- JPA API plugin
trunk/
branches/
api.rest/ <- REST API plugin
trunk/
branches/
jdo.connector/ <- JCA adaptor for JDO
trunk/
branches/
store.neo4j/ <- Neo4j datastore plugin
trunk/
branches/
store.excel/ <- Excel datastore plugin
trunk/
branches/
store.odf/ <- ODF datastore plugin
trunk/
branches/
store.json/ <- JSON datastore plugin
trunk/
branches/
store.ldap/ <- LDAP datastore plugin
trunk/
branches/
store.neodatis/ <- NeoDatis ODB datastore plugin
trunk/
branches/
store.xml/ <- XML datastore plugin
trunk/
branches/
store.rdbms/ <- RDBMS datastore plugin
trunk/
branches/
store.types.spatial/ <- Spatial types plugin
trunk/
branches/
local.repository/ <- Repository (in Maven1 layout) with all dependencies
trunk/
All plugins are independently versioned (trunk is the latest, and branches are stored under the branches directory). This is because they have their own lifecycle, and plugins are bundled together into the "products" (AccessPlatform, AnalysisPlatform). So we could have AccessPlatform using version X of a plugin, and AnalysisPlatform developing version Y of that plugin because it needs some new functionality.
The End-to-End test section is laid out as follows
test/
accessplatform/
trunk/
test.jdo.general/
test.jdo.application/
test.jdo.datastore/
test.jpa.general/
...
branches/
analysisplatform/
trunk/
branches/
So we have separated tests for "AccessPlatform" from "AnalysisPlatform" and we branch all tests for each product.