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).
Starting from version 5.9.2, Nuxeo requires Maven 3.1.1+ (3.2 recommended). Earlier releases require Maven 2.2.1.
git clone [email protected]:nuxeo/nuxeo.git cd nuxeo python clone.py master -a
- Python 2.7 is required. The scripts are not compliant with Python 3.x versions.
- Users of MSysGit should run clone.py with option --no_drive_mapping or -n as MSysGit is not able to access dynamically mounted drives. This option is available as of version 5.7.1.
Contributing to Nuxeo does not require cloning Nuxeo source code: see Contributing to Nuxeo
After having cloned the Nuxeo repository, you need to run a full build in Maven to download all the dependencies.
export MAVEN_OPTS="-Xmx4096m -Xms1024m" mvn -DskipTests install -Paddons,distrib
You can now import the Nuxeo source code in Eclipse. See Eclipse Setup
All releases are tagged
release-x.y.z and maintained on a dedicated branch
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, ...):
git checkout release-5.5 python clone.py
To see all available branches or tags, run git branch -a or git tag.
Either call git pull -u in each repository or run:
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:
echo ". $PWD/scripts/gitfunctions.sh" >> ~/.bashrc
Windows users will find equivalent Batch scripts in the same directory named
Those scripts' main purpose is to recursively run a command on multiple repositories.
gitf status gitf describe --all # Also recurse on "standard" addons (those listed in addons/pom.xml) gitfa [some Git command]
|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- feature-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 back-ported to other maintenance branches. Maintenance branches are only released for development purpose; the fixes are delivered through Hotfix Nuxeo Packages.
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 (future 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 back-port them from master branch to 5.6.x branch. Maintenance branch 5.6.0 is regularly released to deliver 5.6.0-HFxx corrective hot-fixes.