My team are discussing the most efficient way to manage releases to our users. This is our current workflow for our 2 weeks sprint cycles:
The biggest issue we're seeing with this is related to everything being developed on trunk. Because incomplete stories are checked-in to trunk, our nightly builds are occasionally buggy. This scenario can also occur at the end of the sprint, e.g. a Story consisting of 6 tasks (of which 3 are complete) has been checked in to trunk.
I'm of the opinion that a user should only evaluate the efforts of a complete Story or a fixed bug. A Story with 6 tasks isn't Done until those 6 tasks are complete.
One proposed workflow was this (but with some issues):
The problems with this are that for step 1, when we merge to trunk we could also be merging incomplete Stories (and the same for step 2).
This leaves us with this proposed workflow:
This sounds like it could solve most of the problems associated with incomplete Stories. But, it introduces the complexity and overhead of multiple branches.
We'd be interested to hear what you do, and in particular if you:
If you use one the branch approached, what overheads does that introduce, and is it worth it.
We develop on trunk, but we never have incomplete Stories at the end of the iteration. We don't have Stories that don't fit into one iteration. Bigger Stories are split into smaller ones.