Getting Nuxeo Platform source code
Nuxeo core developers should have a look at Nuxeo's Git usage.
Nuxeo Platform sources shall be retrieved and worked with using Git.
Some (mostly deprecated) code and scripts may be retrieved and worked with using Mercurial (see the documentation at Getting the Nuxeo source code (deprecated)) or SubVersion.
The following assumes you know how to work with Maven and sources in your IDE (Eclipse is used below). In particular this means that you have already configured the IDE to work with Maven (M2_REPO set in Eclipse). Nuxeo requires Maven 2.2.1 (not 3.x). |
Getting the development branch
|
Contributing to Nuxeo does not require cloning Nuxeo source code: see Contributing to Nuxeo |
Import Nuxeo source code in Eclipse
Of course for the dependencies to be resolved in Eclipse they will have to be loaded first in your Maven repository, which you can do by performing at least one build first:
If you want to open/edit the projects in Eclipse do the following at the very root of the Git repository:
Then in Eclipse:
Getting a maintenance branch or a specific release
All releases are tagged release-x.y.z and maintained on a dedicated branch x.y.z.
Use the same recipe as above, but specify the wanted branch (5.4.1, 5.4.2, 5.5.0, ...) or tag (release-5.4.1, release-5.4.2, release-5.5, ...):
To see all available branches or tags, run git branch -a or git tag.
Updating your sources
Either call git pull -u in each repository or run:
Useful Shell functions
There are some scripts to ease working on Nuxeo Git repositories available in the scripts directory of Nuxeo.
Load them from your .profile or .bashrc, for instance from Nuxeo root:
Windows users will find equivalent Batch scripts in the same directory named gitf.bat.
Those scripts' main purpose is to recursively run a command on multiple repositories.
Example usage:
Nuxeo versioning policy
Summary sample
SCM Branch | SCM Tag | Version | Status |
|---|---|---|---|
master |
| x.y.z-SNAPSHOT | development branch where is prepared next x.y.z version |
5.5.0 |
| 5.5.0-HFXX-SNAPSHOT | maintenance branch where bugs are fixed/backported for Nuxeo 5.5 |
| release-5.5 | 5.5 | release tag for 5.5 version |
5.4.2 |
| 5.4.2-HFXX-SNAPSHOT | maintenance branch where bugs are fixed/backported for Nuxeo 5.4.2 |
| release-5.4.2 | 5.4.2 | release tag for 5.4.2 version |
fix-NXP-9999-* |
| usually same as on master | development branch dedicated to NXP-9999 feature or bug fix |
Releases are built from tags set on their maintenance branch.
Bug fixes are usually done on a maintenance branch, forwarded to development branch and optionally backported to other maintenance branches.
Important fixes may also be backported from the development branch to some specific maintenance branches, in order to perform minor releases (x.y.z.increment).
Detailed sample
Development is done on branch master with current version 5.6-SNAPSHOT.
Let's say we will release Nuxeo 5.6.
A branch is created from master, named 5.6.0.
On branch 5.6.0, version is updated from 5.6-SNAPSHOT to 5.6 (releasing version).
On branch 5.6.0, code is tagged as release-5.6.
If it is an important release (called "final release"), then a maintenance branch will be kept, else it would be deleted after tagging.
On branch 5.6.0, version is updated to 5.6.0-HF01-SNAPSHOT (in case of future minor fixes for 5.6 version).
On branch master, version is updated to 5.7-SNAPSHOT (next release version).
Release done.
Next development is still done on branch master, with version 5.7-SNAPSHOT.
Bugs identified on 5.6 version will be fixed on maintenance branch 5.6.0 and forward ported to the master branch.
If we estimate some bug fixes are required on 5.6.x released version, we may backport them from master branch to 5.6.x branch and then release a 5.6.(x+1) corrective version.