After almost two weeks of reflection, discussion and feedback from both StackOverflow and people in the industry who I consider to be experts in change management, we came to a consensus approach yesterday.
Actually there is no right or wrong answer - no silver bullet - to handle branching / merging correctly, like, IMHO, it varies from business to business and product to product. So we decided to continue:
Regardless of the trunk or branch, we will continue the number based on the [Major] format. [Minor]. [Build]. [Rebuild], where rebuilt indicates the version of the assembly. Branches and trunk will go out of sync (different line numbers), but this is not a problem, since we will determine the assembly configurations and drop-down locations explicitly anyway. Responsibility for managing the environment will depend on which version is deployed to which server.
We probably wonโt merge the functions into the release branch, since we usually have more focus on the release branch, so weโll exit the candidate branch and add a minor version to the trunk (and other branches, if applicable) before merging right up to the trunk lines after deployment (if applicable).
Since each release causes a slight modification (except for patches), the assembly numbering will never go in the opposite way. Patches obviously come from the prod branch, so the build number will increase.
I have a desire to leave this thread open and let others write about their preferred branch versioning method.
source share