I'm already using Mercurial, and I find distributed VCS much more convenient than SVN generally. Apart from merging, other advantages include offline operation, low-cost branching, and easy cleanup of history. This encourages frequent small commits, making it easy to manage individual changes as indiidual commits.
In short: +1!
Ok then the other aspect of this is whether to split up the current Java code base into smaller repositories.
- The pro for this is that then each repository is smaller and more focused on a particular need.
- The con is that we may end up with many repositories if we start to expand the languages supported.
For Savara, which used to have a similar layout as Scribble, I divided the code into the following:
Core - included the OSGi bundles that were environment independent, and would be deployed to Nexus as their primary mechanism for release
Eclipse tools - provides the Eclipse plugins. Release is via generating an update site
Server integration - builds a distribution that can be deployed into a server (currently just JBossAS), to integrate core capabilities into the server
So the only difference I see with Scribble is that instead of integration into a server, it provides a command line execution. Therefore for scribble we could have:
Scribble-core - core bundles deployed to Nexus
Eclipse tools - integration with Eclipse, provided via update site
Command line tools - provided as a zip distribution
These would be language specific, although as these are the first repositories, possibly they don't need to explicitly state 'java' in the repo name - with subsequent languages adding the language as necessary?
Core modules have now been ported to https://github.com/scribble/scribble-core
Hudson build job is here: http://hudson.jboss.org/hudson/job/scribble-core-master/
Other parts of the code (Eclipse and command line integration) will be ported soon.
All repositories are now ported, see the scribble organisation here: https://github.com/organizations/scribble
There is also the beginings of an article describing a development workflow - currently documented against the Savara project, but the same applies for Scribble. There are still some outstanding questions to be answered, so may change over time, but when stable will be linked/copied for the Scribble project: http://community.jboss.org/wiki/SavaraDevelopmentWorkflowwithGIT