Skip to content

Commit fd0a1cc

Browse files
Jascha Franklin-Hodgehunterowens
authored andcommitted
Swapped position of Branch Mechanics and Release Process
1 parent 9576726 commit fd0a1cc

1 file changed

Lines changed: 29 additions & 28 deletions

File tree

ReleaseGuidelines.md

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ MDS will see regular updates and new [releases][mds-releases]. This document des
55
## Table of Contents
66

77
* [Versioning](#versioning)
8-
* [Branch Mechanics](#branch-mechanics)
98
* [Release Process](#process)
109
* [Goals](#goals)
1110
* [Roles](#roles)
1211
* [Schedule](#schedule)
1312
* [Communication and Workflow](#communication-and-workflow)
13+
* [Branch Mechanics](#branch-mechanics)
1414
* [Checklist](#release-checklist)
1515

1616
## Versioning
@@ -25,33 +25,6 @@ At this early stage, MDS will be moving relatively quickly with an eye toward st
2525

2626
For now, MDS will maintain *two concurrent (MINOR) versions* (e.g. if `0.3.0` were the current version, the `0.2.x` series would continue to receive maintenance in addition to `0.3.x`).
2727

28-
## Branch Mechanics
29-
30-
Aside from using `git tags` as mentioned earlier, here we outline a branching strategy to handle ongoing maintenance changes in parallel with features for new releases.
31-
32-
### Primary branches
33-
34-
At a high-level, there are two primary branches:
35-
36-
* [`master`][mds-master] represents the current stable release (i.e. the most recent tag) of MDS. Development work generally *does not* happen here, but is rather merged from elsewhere.
37-
38-
* [`dev`][mds-dev] represents work on the next MINOR release, and is the *long-term* development branch.
39-
40-
### Feature branches
41-
42-
Work on new features for MDS happens in branches cut from `dev`. When the feature is ready for review, submit a PR against `dev`, ideally with any merge conflicts already resolved. `dev` serves as the collection point for all new feature work.
43-
44-
### Release branches
45-
46-
In anticipation of ongoing maintenance, a branch will be created for the current release series. For example, at the time `0.2.0` is released, a branch will be cut from `master` for `0.2.x`.
47-
48-
This *release branch* represents the current state of that release series. All maintenance/bugfix work for the series is collected in this branch. To work on a patch, cut a branch from the release branch. When ready, submit a PR against the release branch.
49-
50-
When a PATCH release is ready (e.g. `0.2.0` to `0.2.1`), the release branch (e.g. `0.2.x`) is merged to `master` (to make the release official) and `dev` is rebased onto `master` (to ensure the patch is incorporated with any new work).
51-
52-
Breaking changes should always be merged to develop. These may be merged at any time and will be incorporated into the next minor release. For non-breaking changes, these should either be merged to develop if the next release is a minor release, or to the appropriate release branch if the next version is a patch release. During each cycle, we merge changes to both dev and 0.n.x branches, so breaking changes can be proposed and worked on at any time
53-
54-
As stated earlier, at this time MDS will maintain *two concurrent MINOR versions*. This means that when a MINOR release is made (e.g. `0.4.0`), work on the outgoing series (`0.2.x`, in this case) ceases and its release branch is removed.
5528

5629
## Release Process
5730
The sections below define the release process itself, including timeline, roles, and communication best practices.
@@ -115,6 +88,34 @@ The following best practices are intended to create clarity around each release
11588

11689
* Proposed changes should come in the form of PRs to give the community ample awareness and time for feedback
11790

91+
## Branch Mechanics
92+
93+
Aside from using `git tags` as mentioned earlier, here we outline a branching strategy to handle ongoing maintenance changes in parallel with features for new releases.
94+
95+
### Primary branches
96+
97+
At a high-level, there are two primary branches:
98+
99+
* [`master`][mds-master] represents the current stable release (i.e. the most recent tag) of MDS. Development work generally *does not* happen here, but is rather merged from elsewhere.
100+
101+
* [`dev`][mds-dev] represents work on the next MINOR release, and is the *long-term* development branch.
102+
103+
### Feature branches
104+
105+
Work on new features for MDS happens in branches cut from `dev`. When the feature is ready for review, submit a PR against `dev`, ideally with any merge conflicts already resolved. `dev` serves as the collection point for all new feature work.
106+
107+
### Release branches
108+
109+
In anticipation of ongoing maintenance, a branch will be created for the current release series. For example, at the time `0.2.0` is released, a branch will be cut from `master` for `0.2.x`.
110+
111+
This *release branch* represents the current state of that release series. All maintenance/bugfix work for the series is collected in this branch. To work on a patch, cut a branch from the release branch. When ready, submit a PR against the release branch.
112+
113+
When a PATCH release is ready (e.g. `0.2.0` to `0.2.1`), the release branch (e.g. `0.2.x`) is merged to `master` (to make the release official) and `dev` is rebased onto `master` (to ensure the patch is incorporated with any new work).
114+
115+
Breaking changes should always be merged to develop. These may be merged at any time and will be incorporated into the next minor release. For non-breaking changes, these should either be merged to develop if the next release is a minor release, or to the appropriate release branch if the next version is a patch release. During each cycle, we merge changes to both dev and 0.n.x branches, so breaking changes can be proposed and worked on at any time
116+
117+
As stated earlier, at this time MDS will maintain *two concurrent MINOR versions*. This means that when a MINOR release is made (e.g. `0.4.0`), work on the outgoing series (`0.2.x`, in this case) ceases and its release branch is removed.
118+
118119
## Release Checklist
119120

120121
The following steps **must** be followed for **every** release of MDS:

0 commit comments

Comments
 (0)