We've started using the feature branch pattern here at work.
Everything appears to be working well, here's the steps we use:
- Developer branches trunk
- Developer(s) complete implementation and testing using the branch
- Developer merges trunk into branch, bringing the branch up to date ready for reintegration
- Maintainer reintegrates branch into trunk
- Version, build and tag.
Developers have read/write access to the branches folder, read access to tags and trunk
Maintainers have read/write access to all folders
We use svn 1.5.1 (limited by on the server to Ubuntu Server 8.04), although we're in the process of moving to an up to date server (Ubuntu Server 12.04) with up to date svn.
Client us TortoiseSVN 1.7.6, svn client version 1.7.4.
So far, everything is working well and we have multiple developers all writing features at the same time.
However at the moment I'm the only nominated maintainer, other will be nominated once the process is hammered out and people have been trained to an adequate level.
My concerns are that one the process becomes more autonomous and my direct involvement is reduced the following scenarios may occur and I can't tell how to prevent them:
- Developer forgets that a branch has been reintegrated and accidentally commits work to it
- Maintainer doesn't adequately check that a branch is up to date and ready for reintegration and performs a reintegrate and commit.
I can't see anything in Tortoise or SVN that warns or prevents you from doing this.
Then again, I haven't tried to commit anything nasty just to see what it does.
How can I automatically prevent the users from making these bad commits?