Versioning Branching Strategies - Medium Team and Frequent Releases

We are a mid-sized team of 10 developers (3 developers per project) and want to know which version control strategy is optimal.

Already done significant research in this area and found that "branch by release" makes sense. However, we've implemented this before and found it to come with significant overhead when we released every other week.

One example that was mentioned is forking on demand with labeling. The way it works is that you stick a label and take a snapshot of your code on each release that needs to be tested and published. Then only branch if there is a bug that needs to be fixed in production.

I have drawn up a diagram that illustrates this approach, which also includes branching functionality for features that span multiple sprints. enter image description here

At each check-in, code is set aside for code analysis, assembly, and code review before being included in the trunk branch.

Are there any disadvantages that I am not aware of? Why isn't this approach more widespread?

+3


source to share


2 answers


I am not aware of any major problems with this approach.

I would recommend doing regular trunk-to-branch merges so that they don't diverge too far from the trunk code. This is especially important for long-lived branches.



One can automate this using continuous integration, for example scheduling a merge every night, which fails if the merge creates conflicts. This will avoid a nasty end-up merge when you fold the branch back into the trunk.

+2


source


I believe the main disadvantage of using tags in this way in TFS is that tags are not versioned. If one person deletes / changes the label, there is no way to get it back unless you save a copy / backup of the label. If you follow this, keep a record of the contents of the label so that it can be recreated if needed.



+1


source







All Articles