We have many small software changes and frequent releases (every 2 weeks). Everything that's ready to go when a release date rolls around is supposed to be included in the release; everything still in work is held back.
What's a smart way to manage this environment in SVN?
Our present strategy is that every project gets its own branch. When we're ready to do a release, we check out the "production" branch, merge in all branches for completed projects, and then commit this back to production.
The problem with this is that changes are often interdependent. So developers have to check out the branch for their current project, merge in another branch, and then somehow commit this back. Also, any conflicts between changes are invisible until the deployment person tries to do the merge. In practice, he then tries to buzz through the conflicts and clean them up as quickly as he can. I'm sure that if this hasn't resulted in incorrect conflict resolution yet, it will sooner or later.
In past jobs I've always maintained a single main-line branch with all ongoing work, and occasionally spun off an emergency bug fix branch, and that was about it. That works great in an environment where releases are on a sane schedule, but apparently not so well here.
Last updated