MapBuilder uses the following strategy for managing the Subversion repository:
- trunk: development on the trunk is for implementing all low impact features (e.g., developing a new widget which doesn't impact anything else) and bug fixes (unless they're complex and involve many changes, in which case it may be best to use a branch). All changes commited to the trunk must be identified in the bug tracker.
- releases: releases get created as branches from the trunk into the "tags" directory as release_1.x. The binary distribution files would then be created from this release branch. Release branches go into maintenance mode which means only critical/security bug fixes will be applied on the released branches and incremented as version 1.x.1, This 3-digit branch would be created from the 1.x release branch. Release branches should be as stable as possible.
- *high risk development:*Developing new functionality can make the codebase unstable for others and impact their productivity. So it is best to do this on a branch. This type of new functionality should be targeted for a specific release number which means that they get merged to the trunk before that release branch is created, but also after the preceding version number has been released. Branches are created under the "branches" subdirectory and should be named in plain English (e.g. dojo, georss, etc.) and tied to an issue in the bug tracker system. (A one-time exception here is for features that have already been developed under CVS and are essentially ready to be put on the
trunk right away.)