I am having trouble developing a good branching strategy that makes it easy to merge and track changes in our environment.
A quick summary of release management is as follows:
We have several commercial products as part of the solution. Invariable external factors lead to the fact that we support several versions of the software unlimitedly . Releases are too frequent and usually in response to a list of improvements or defects and VERY aggressive schedules. Only Bugfix editions are usually dotted versions supported in the parent release branches. Releases with new functionality usually become a new version / branch.
The source control tree is as follows:
- trunk - dev
- Product ABC
- ABC 1.0
- ABC 1.0.1 (point release same branch)
- ABC 2.0
- Product XYZ
- XYZ 1.0
- XYZ 2.0
Dev, obviously, is our branch of development and is not expected to be stable. Dev changes that are peer-reviewed are advancing towards the torso that I like to think of as stable, but still development code. When we add new features to the trunk (usually in response to a client’s project), we end up getting closer to the release, and I turn away from the trunk into the branch, for example, “Product ABC 2.0” above.
, . , dev, , , dev. , dev , .
, -, , , , .
MS ( ), -, . -, , ?