Thanks a lot for your explanation and the connection to Debian. This is exactly the way I see it.
HEAD : Unstable
Tip of released branch: Testing
Released versions: Stable
If we could agree on this denomination, we should then clarify the expectations for each of the trees.
As for where does development happen, here is the take I have been following so far when a project starts:
- Get a checkout from the current release
- Get a checkout from HEAD for the packages that I know will change heavily.
- Add new packages to HEAD
- Merge this together in the development and production server for the client, along with custom packages in our own repository.
And here is my way of committing:
- When I fix change functionality in released packages make sure they install on other environments (read: make a quick cvs update on other servers under my maintenance and do a quick check).
- HEAD package changes are committed if they work on the development server and then moved into production. No further testing on other machines.
- Once in a while I sit down and test the installation (in contrast to only upgrades) of a couple of these packages on a blank core release, using CVS. If it works I release the packages using the compat flag.
- Today I learned, that I should also release the required packages, otherwise the release does not make any sense.