The Road To Mercurial
By dochez on Oct 15, 2007
As we have already stated, eventually GlassFish will move to Mercurial (Hg) as its primary source code management (SCM). However the road to Hg has proven more difficult than expected but let me start with why we need to move out from CVS.
- - CVS is fairly incompetent at moving files. With GlassFish v3, we will soon be changing the shape of the workspace to reflect our modularization effort and to stick closer to our new build system, maven2. So files will be moved around (possibly several times) until we stabilize the new brownian motion of modules relationships and without owning the cvs server (owned by java.net), we would have lost cvs history each time.
- - Hg is a distributed source code management system which is an advantage when dealing with massive projects like GlassFish.
- - Hg has the changeset concept where changes are treated as a group of related changes to several files which makes tracking and rollbacking a lot easier.
However moving is a difficult task, mainly because the tools to transfer the cvs history to mercurial are not capable of handling such a big repository as GlassFish V2. On top of that, our open source project host, java.net, cannot work with mercurial yet forcing us to manage our own infrastructure for user authentication, servers, and backup. We have better things to do...
So we have decided to move to Subversion ! Ok I know it sounds weird but hear me out :
- - java.net supports svn projects so no infrastructure work for us.
- - tools to move cvs history to subversion are very mature and worked flawlessly in our trial attempts.
- - in subversion, we can move files around without loosing history.
- - all IDEs in the universe supports subversion so our programmer's community don't get too impacted.
So you have the full story, GlassFish developer, get to learn subversion for the time being and keep an eye on Mercurial.