We have moved to a product versioning approach which will mark/increment builds according to the following format: [Major].[Minor].[Build].[Revision/Patch]
, and a production release will essentially be an increment of Major or Minor (depending on the scope of changes).
This works great for patches and Trunk builds, but not so well for concurrent feature development in branches - especially as it is likely we would build release candidates off the branch instead of merging to the Trunk and releasing (not my preferred option, but likely to be more realistic, unfortunately).
Regardless of whether we merge down to the trunk (or not), does anyone have any useful strategies for dealing with branch versioning? We'd need to be able to uniquely identify builds from the branches and trunk, and may end up releasing from trunk or branches at any given time.
Some considerations:
- We may not know in advance what the release order is, so trying to assume what the minor version should be on a branch-by-branch basis isn't likely to solve the problem.
- We could add another number to the product number which indicates the branch (if applicable), though where would it logically sit?
A (lightweight) scenario may help:
Product X\Trunk (ver 1.1.208.0)
Product X\Branches\Feature A (ver 1.1.239.0)
Product X\Branches\Feature B (ver 1.1.221.0)
Edit: The best documentation I've found thus far is located on MSDN though it is a little vague on unique versioning of concurrent branches.