The source code of the Nuxeo Content Services Platform has been moved from the internally hosted Mercurial repositories to external GitHub repositories.
How to retrieve source code?
Here is how to retrieve Nuxeo source code in read-only mode. However, maybe you don’t need to do it: see below “How to contribute”.
Requirements: Python 2.7.x and Git 1.7.x
git clone git://github.com/nuxeo/nuxeo.git
cd nuxeo
git checkout master
python clone.py
Run python clone.py -h
for more details.
Why Git and GitHub?
Before that move, Nuxeo folks were sometimes already using Git because they are involved in external projects using Git. Based on their feedback, it appeared that Git was technically as good as Mercurial, and that hosting services such as GitHub were greatly improving the code management and encouraging contributions.
GitHub provides good tooling around Git features and great visibility in the developer ecosystem.
We look at GitHub to help external people contribute to Nuxeo, but also to help improve our own internal code review process. For instance, we are using the pull-request system inside Nuxeo, between developers, when we want to highlight a code review request on some specific piece of code, besides the continuous code review we are used to, which is based on an automatic email per commit.
Finally, as we were using Git for the more recent Nuxeo addons, and still mostly Mercurial for the rest of the platform, it was becoming painful to maintain both sources. So, using only Git for the whole platform will also simplify the build, maintenance of the scripts, and the developers’ lives.
How to use Git?
Nuxeo developers will share their experience, document main commands and provide useful tips about Git right here.
Nuxeo policy on Git branches
- development branch is “master” - maintenance branches are “5.5.0”, “5.4.2”, “5.4.1” - stable branch, if used, will point at the latest stable release (currently release-5.5).
What about contributions?
Using GitHub will greatly improve the contribution process. https://doc.nuxeo.com/x/VIZH will be updated according to the new capabilities. Briefly, a contributor will have to:
- log in to GitHub with his own account - sign the Nuxeo contributor agreement - fork the Nuxeo module he wants to contribute to - do some changes in the forked repository - file a Jira issue and reference it in his commits - send a pull request to Nuxeo
And that’s all. The Nuxeo development team will manage the contribution, optionally comment the diff, ask for changes, and finally merge it into Nuxeo.
No more Mercurial?
For now, there are still some Nuxeo projects under Mercurial. This move involves “only” the Nuxeo Platform source code and its sub-repositories, including most addons).
Of course, hosting our source repositories has a lot of advantages and a few drawbacks. When migrating to GitHub, we had to migrate the Mercurial hooks we were using and solve other such technical constraints, but at the end, we succeeded in transposing all features and the interoperability we need.
Mercurial is a great tool and we’ll likely continue to use it when it makes sense, but we want to avoid having users switch from one tool to another.
The deprecated repositories are still accessible. A DEPRECATED.txt file has been added inside the main branches.