Skip to end of metadata
Go to start of metadata

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

Clone in Read-Only mode
Clone in Read+Write mode
  • clone.py can be run with Python 2.7.x but not 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

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:

Full build Nuxeo without running tests

If you want to open/edit the projects in Eclipse do the following at the very root of the Git repository:

Generate Eclipse's project files

Then in Eclipse:

Import Nuxeo modules into 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, ...):

Get Nuxeo 5.5 release source code

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:

Update sources

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:

Use Nuxeo helper Shell scripts

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:

Git script "gitf" 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-*
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 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.

Labels