Back To The Sources – Version Control Systems: From Subversion to Git
Now that you have an overview of how our sources are organised into (sub-)projects let’s see where to find them.
From Subversion to Git
A little bit more than one year ago we switched all our projects sources from the centralised source control management tool Subversion to the distributed one Git. Even if it is always a challenge to change such tool which is the central piece of your development (you need to train your teams, adapt your tools and processes), it was necessary to improve our ability to quickly evolve, and manage long-term branches to develop new features or to maintain previous releases of the product (we’ll see in a future article how we benefit from it nowadays with our acceptance infrastructure managing live instances deployment of feature branches currently developed).
For the migration we didn’t chose the possibility to run both systems in parallel to avoid to maintain them twice and to enforce our teams to switch to Git as soon as possible. I automated the conversion of all our projects from our old subversion (svn.exoplatform.org) and it occurred a week-end. I was really satisfied by svn2git thus I wrote a little script to do it.
We are now hosting our projects on Github in a dedicated organisation exoplatform. Unlike in Subversion where we stored everything in a unique repository, with Git we created one repository by project to better handle the lifecycle of each of them (with git when you create a branch it is for the whole repository unlike in subversion where it was for a subdirectory).
The current list of repositories compounding eXo platform is the following :
- https://github.com/exoplatform/platform-public-distributions/ : Platform public distributions. Main project used to package the standalone community edition based on Apache Tomcat.
- https://github.com/exoplatform/platform/ : eXo Platform
- https://github.com/exoplatform/integration/ : Integration of eXo services
- https://github.com/exoplatform/calendar/ : Calendar component
- https://github.com/exoplatform/forum/ : Forum component
- https://github.com/exoplatform/wiki/ : Wiki component
- https://github.com/exoplatform/social/ : Social component
- https://github.com/exoplatform/ecms/ : Content management components
- https://github.com/exoplatform/commons/ : Commons services
- https://github.com/exoplatform/platform-ui/ : UI customizations to overrride GateIn styles
- https://github.com/exoplatform/jcr/ : eXo JCR, Java Content Repository implementation of the JSR-170 standard
- https://github.com/exoplatform/ws/ : Web Services component
- https://github.com/exoplatform/core/ : Core Services
- https://github.com/exoplatform/kernel/ : Kernel component