In my current project, I have to decide which method to use when branching. I have two options (we will assume that we have already decided to develop in the trunk):
version branches
Create a branch when the new version is put on test machines and mark it as "release0.1". Errors are fixed in this thread (and then, of course, merge with the trunk), and when this release finally goes live, it is marked as "release0.1.1". This results in a branch for each major version and a tag for each minor version. If the error should be fixed in the live version, it fixes the corresponding branch in it, and then merges into the trunk.
Promotion Version
They have only three branches "trunk" (for development), "test" and "live". When the version is placed on test machines, the connecting line is merged (advancing) into the "test" branch, errors are fixed in this branch, and when the version is released, the "test" branch is merged into the "live" branch. If we find an error in the "live" branch , it is fixed there, and then merges with the body.
What are the pros and cons of these two philosophies? What are your own experiences? Are there any other, possibly better, methods?
version-control branch merge
BE
source share