Major releases provide major application changes, major feature anhancements and may include incompatible API changes. Binary module compatibility is not ensured.
Minor releases provide new features to a major version. API may be enhanced with backward compatibility. Binary module compatibility should be ensured.
Major/minor releases are made from branch master. After a major/minor release is made, master is tagged and a new maintenance branch is created. The tag name format is snap-<major>.<minor>.0.
New features are implemented on dedicated feature branches derived from master. After review with the responsible team, they are merged into master and then deleted. A feature branch may have any name, a good practice is to use an existing JIRA issue ID.
A micro release is only for maintenance of a major/minor release, usually no new features are added. Binary module compatibility shall be ensured. The API should remain unchanged.
Micro releases are made from maintenance branches. These must be created immediately after a major/minor release has been made (after the major/minor tag has been set on master). The branch name format is snap-<major>.<minor>.x. The tag name format for micro releases is snap-<major>.<minor>.<micro>.
Fixes are made on dedicated fix branches from the maintenance branch. After review with the responsible team, they are merged back into the maintenance branch and then deleted. A fix branch may have any name, a good practice is to use an existing JIRA issue ID.