There are many changes regarding source code management workflows. The one we use is an extension of what you describe in your post. Your workflow is good enough for minor changes, but not if you have several teams working on different issues of considerable complexity.
What we do is branching out for each team, than the team can take responsibility for the team (project) branch. Each team is also responsible for synchronizing the command branch with the connecting trunk by merging the trunk with the branch, preferably after each fixation on the trunk. At the end of the project, the branch is again merged into a trunk (reintegrated) and removed.
This branch of the approach is merge ... merge - merge back - removal works well for us
mfeingold
source share