Branching strategy for parallel development that won’t be in the same release

branchingversion control

My team is working on a product, which for business reasons needs to be released on a regular schedule. An issue has arisen where we want to do development in parallel for the upcoming release, as well as the 'next' release. This is to become standard practice, so it's not as straightforward as cutting a feature branch for the new work. We'll continually have 2+ teams working on different releases of the same product.

Is there an SCM best practice for this sort of arrangement?

Best Answer

I've seen stuff like this get managed on open source projects, though admittedly I have limited experience.

imagine this branching structure.

-- R0 ---> R1 --->---> R2 --->--->- R3

.../.........../................./.................../

--->---> trunk --->--->--->--->--->--->

|(clone)...../..../../...../...../../..../

-->--->---> version next --->--->--->

In this scenario, you take snapshots of the trunk every time you make a release, and this becomes the final code for that version. Version next is a clone of the trunk at some arbitrary point in time. As new features are developed, they can be pushed into the trunk whenever management decides they are ready.

ALSO: Ideally you would include which SCM in the description of the question, because things like perforce behave very differently from git.