I know that it is common for software to have parallel development in major versions, such as v1 (1.x.x), which can be completely different from v2.
Regarding Semver (Semantic Version), can I upgrade to a patch version (e.g., 1.0.1) right after launching a minor version (e.g., 1.1.0)? Let me describe a situation that I would like to achieve in chronological order:
- Launched a major release 1.0.0.
- Launched a minor release 1.1.0.
- Launched a patch release 1.0.1 (Is that possible or can I not launch retrocompatible patches? Note that the patch is for 1.0 and not for 1.1. In that case, is it the right way to launch 1.1.1 and not 1.0.1?).
The master/main branch are generally linear with another branches merging into it. Would it not be inconsistent merge into master the branch of 1.1.0 before branch of 1.0.1 since their branches started with different parent commits?
P.S. I would like to use the Gitflow Workflow (master, develop, release-x.y, hotfix-x.y.z, etc) but adapt something for the better of this scenario I described above.
Post-Answer Edit: Observing the behavior of parallel branching model, where all the tags are not necessarily chronologically sequential (E.g. 1.0.0, 1.1.0, 1.0.1, 1.2.0, 1.1.1, 1.0.2, ...). I can conclude that:
Minor releases inside a major release are always sequential (E.g. 1.1, 1.2, 1.3, ...). There's no way to launch 1.2 before 1.1.
That behavior repeats in patches inside a minor release (E.g. patches of release 1.1: 1.1.1, 1.1.2, 1.1.3, ...). Patch 1.1.2 can't be launched before 1.1.1.
I would like to share some interesting links that in a certain way are related to this question for further reading:
- Similar question of this one: How to deal with multiple release/hotfix branches in Gitflow?
- Trunk-based development: https://cloud.google.com/architecture/devops/devops-tech-trunk-based-development
- Git Flow - https://nvie.com/posts/a-successful-git-branching-model