| Your Rating: |
![]() ![]() ![]() ![]()
|
Results: |
![]() ![]() ![]() ![]()
|
0 | rates |
Status
The prefered root URL is: http://svn.magnolia-cms.com/svn/ All paths mentioned below are relative to this.
Since August 28-29 2008, our Subversion repository's structure has been changed. Below is the new structure. If you're lost, have a look at the Previous SVN structure.
Along this change come a few side-effects and benefits:
- Each top-level directory (build, community, enterprise, internal, projects) has its own sandbox and graveyard folders.
- Simplified maintenance, specifically for permissions: it should now be much easier to have contributors for specific modules.
- Restructured POM files: we'll have parent POM files for modules, ee-modules, projects, etc, so this will hopefully be the end of problems like deployments to the wrong maven repository, permissions, etc.. and should simplify everyone's poms, since it won't need repositories etc.
- The 2 above points made setting up Nexus easier.
Branches
The current (Mar.28 2012) status of branches for the main project (/community/magnolia) is as follows:
- branches/magnolia-4.3: what ever should go into 4.3.x has to be back-ported by using svn merge as usual
- branches/magnolia-4.4: what ever should go into 4.4.x has to be back-ported by using svn merge as usual
- trunk is 4.5.x and is actively maintained
- branches/magnolia-5.0-x current development for 5.0 changes will be merged globally to trunk once trunk is branched and main bulk of development is happening on 5.0 (April/May)
- branches/magnolia-x.x: not mentioned above are in a sleep mode. For those untouched last 2 years and not having changes compared to last tag, they can be retired completely.
Scripts
In each top-level directory has a set of scripts: newmodule.sh, checkout.sh and all.sh.
newmodule.sh: creates new modules on the svn repo along with their t-t-b directories.checkout-or-update-all.sh: checks out the content of the trunks from this folder into aptly-named local folders (i.e checks out .../foobar/trunk into foobar/), or updates them if they already exist locally.all.sh: executes a shell command on each of the locally checked out modules (or directories, to be correct). Typically usages would be./all.sh svn statusto executesvn statusat once on all modules or./all.sh mvn cleanto clean all, eventhough these are not linked through a maven reactor.
So if you're on a *nix system, you're more than welcome to use these files. The general procedure would thus be to checkout the root of a top-level directory in a non-recursive manner, which is typically done with the --depth=files switch if your client supports Subversion 1.5+.
For example:
svn co --depth=files http://svn.magnolia-cms.com/svn/build cd build ./checkout.sh
/build
This is where all build-related tools, scripts etc end up. These are usually pretty stable, and can be released quickly.
- magnolia-parent-pom is our supa-dupa-meta-giant-parent pom.
- magnolia-parent-pom-maven-plugin is the parent pom we share for our custom Maven plugins.
- the parent poms under
poms/(magnolia-parent-pom-*) have much more stuff defined: plugins, a couple of really basic dependencies (servlet-api, jcr, ...). Since these depend on our custom plugin, they had to be separated from the magnolia-parent-pom: they extend it, but they have a separate lifecycle, are not built together. Obviously, we'll try to keep all versions in synch and release new versions of magnolia-parent-pom and the others within the same shortest unit-of-time possible.
This directory is readable by anyone, and Magnolia committer can, well, commit.
Here's an overview of what's currently in there :
build/
/magnolia-parent-pom/t-t-b/pom.xml : the general parent pom. Parent of all parents.
/magnolia-parent-pom/t-t-b/maven-plugin/pom.xml : a parent pom for our plugins.
/maven-plugins
/maven-site-skin/t-t-b
/magnolia-build-tools/t-t-b
/magnolia-bundle-assembly/t-t-b
/maven-bundle-plugin/t-t-b
/maven-setproperty-plugin/t-t-b
/poms
/t-t-b : reactor project with a different parent pom for each type of project
/pom.xml
/ce/pom.xml
/community-module/pom.xml
/ee/pom.xml
/project/pom.xml
/internal/pom.xml
note: t-t-b stands for /trunk, /tags, /branches.
/community
This contains the core of Magnolia. All the community code is here.
- magnolia : the main project, contains the base of Magnolia, from
magnolia-coretomagnolia-empty-webappand the basic modules. - modules : each community module which is not part of the default
magnolia-empty-webappis here. Each has its own lifecycle and thus its own ttb folders. - bundle : a reactor project that bundles Magnolia together in final deliverables: a webapp bundled with dms and samples, a Tomcat archive pre-installed with 2 copies of this webapp (magnoliaAuthor and magnoliaPublic). It currently also runs some integration tests, but these are just in their inception (just a proof of concept, really) and will possibly move to another location.
- archetypes : Maven archetypes for quickstart new Magnolia-related projects. Currently being rewritten, but will provide skeletons for Magnolia-based webapps, 3rd party Magnolia modules and even one for our own modules.
You will notice that the top directory currently only has a checkout.sh script, and only the modules/ subfolder has the famous newmodule.sh, checkout.sh and all.sh threesome. This might change in the future.
This directory is readable by anyone, and Magnolia committers can, well, commit.
Here's an overview of what's currently in there :
community/
magnolia/t-t-b
modules/
magnolia-module-*/t-t-b
bundle/t-t-b
archetypes/t-t-b/
maven-archetype-magnolia-module (for external modules / sample)
maven-archetype-magnolia-module-internal (for our modules)
maven-archetype-magnolia-webapp
graveyard/
magnoliaQT/
note: t-t-b stands for /trunk, /tags, /branches.
/enterprise
This contains all modules and bundles for Magnolia Enteprise Edition.
The access to this directory is restricted.
/internal
This contains all the internal projects of Magnolia International (our website, the registration webapp, the license generator, ...
)
The access to this directory is restricted.
/projects
This contains all projects, i.e Magnolia-based projects hosted by us for our customers or partners.
The access to this directory and subdirectories is restricted.
