Updated: May 2, 2007
To accommodate ongoing development efforts, SVN is broken down in the following ways, for each module (application, library, script, etc, that is each compiled into a single package):
- trunk : Initial checkins of code. This code may be broken and probably requires further development.
- branches: Code ready for production. This code is stable, but may need more testing. Patches are first applied to head, then merged (selectively) into this branch. This can leave head as a free for all, but allows the developer to move valuable code upstream by hand. It doesnt have to be a direct copy of head.
- tags: Incremental tag of the branch. Its a snapshot of a point in time that encompasses all changes made to the branch at that date. It's primarily used to give to other people not on the development team. This code is very stable, production quality, and is never altered. Rather, for each addition, a new tag is made.
SVN directly translates to nodes in the following manner:
Web-based SVN browser.
Code from trunk (provided it compiles) is pushed to the Alpha group (alice.cs.princeton.edu). This allows developers to watch broken code in action and fix when necessary. Individual patches made to HEAD, deemed stable, are merged into the branch.
Code from the branch are pushed to the Beta node group. This is a proving ground for all modules. Broken modules are identified and fixed here, but fixes start the process all over again (commit to HEAD, move HEAD onto Alpha, if OK on alpha, move to Beta, repeat).
The tag is then pushed to the nodes. This code can be distributed to other development shops. This should be human consumable code that is ready to be looked at by outside developers.
If you would like to join the PlanetLab
Implementation Team as a developer, contact PlanetLab
to apply for developer access.