1
1
# Releasing
2
2
3
- The following steps outline the release process for both new minor versions (e.g.
4
- releasing the ` master ` branch as X.Y.0) and patch versions (e.g. releasing the
5
- ` vX.Y ` branch as X.Y.Z).
3
+ The following steps outline the release process for both new minor versions and
4
+ patch versions.
6
5
7
6
The command examples below assume that the canonical "mongodb" repository has
8
7
the remote name "mongodb". You may need to adjust these commands if you've given
@@ -37,26 +36,10 @@ page.
37
36
This uses [ semantic versioning] ( https://semver.org/ ) . Do not break
38
37
backwards compatibility in a non-major release or your users will kill you.
39
38
40
- Before proceeding, ensure that the ` master ` branch is up-to-date with all code
39
+ Before proceeding, ensure that the default branch is up-to-date with all code
41
40
changes in this maintenance branch. This is important because we will later
42
- merge the ensuing release commits up to master with ` --strategy=ours ` , which
43
- will ignore changes from the merged commits.
44
-
45
- ## Update composer.json
46
-
47
- This is especially important before releasing a new minor version.
48
-
49
- Ensure that the extension and PHP library requirements, as well as the branch
50
- alias in ` composer.json ` are correct for the version being released. For
51
- example, the branch alias for the 4.1.0 release in the ` master ` branch should
52
- be ` 4.1.x-dev ` .
53
-
54
- Commit and push any changes:
55
-
56
- ``` console
57
- $ git commit -m " Update composer.json X.Y.Z" composer.json
58
- $ git push mongodb
59
- ```
41
+ merge the ensuing release commits with ` --strategy=ours ` , which will ignore
42
+ changes from the merged commits.
60
43
61
44
## Tag the release
62
45
@@ -69,78 +52,34 @@ $ git push mongodb --tags
69
52
70
53
## Branch management
71
54
72
- # Creating a maintenance branch and updating master branch alias
73
-
74
- After releasing a new major or minor version (e.g. 4.0.0), a maintenance branch
75
- (e.g. v4.0) should be created. Any development towards a patch release (e.g.
76
- 4.0.1) would then be done within that branch and any development for the next
77
- major or minor release can continue in master.
78
-
79
- After creating a maintenance branch, the ` extra.branch-alias.dev-master ` field
80
- in the master branch's ` composer.json ` file should be updated. For example,
81
- after branching v4.0, ` composer.json ` in the master branch may still read:
82
-
83
- ```
84
- "branch-alias": {
85
- "dev-master": "4.0.x-dev"
86
- }
87
- ```
88
-
89
- The above would be changed to:
90
-
91
- ```
92
- "branch-alias": {
93
- "dev-master": "4.1.x-dev"
94
- }
95
- ```
96
-
97
- Commit this change:
98
-
99
- ``` console
100
- $ git commit -m " Master is now 4.1-dev" composer.json
101
- ```
55
+ # Creating a maintenance branch and updating default branch name
102
56
103
- ### After releasing a new minor version
104
-
105
- After a new minor version is released (i.e. ` master ` was tagged), a maintenance
106
- branch should be created for future patch releases:
57
+ When releasing a new major or minor version (e.g. 4.0.0), the default branch
58
+ should be renamed to the next version (e.g. 4.1). Renaming the default branch
59
+ using GitHub's UI ensures that all open pull request are changed to target the
60
+ new version.
61
+ Once the default branch has been renamed, create the maintenance branch for the
62
+ version to be released (e.g. 4.0):
107
63
108
64
``` console
109
- $ git checkout -b vX.Y
110
- $ git push mongodb vX.Y
111
- ```
112
-
113
- Update the master branch alias in ` composer.json ` :
114
-
115
- ``` diff
116
- "extra": {
117
- "branch-alias": {
118
- - "dev-master": "4.0.x-dev"
119
- + "dev-master": "4.1.x-dev"
120
- }
121
- },
122
- ```
123
-
124
- Commit and push this change:
125
-
126
- ``` console
127
- $ git commit -m " Master is now X.Y-dev" composer.json
128
- $ git push mongodb
65
+ $ git checkout -b X.Y
66
+ $ git push mongodb X.Y
129
67
```
130
68
131
69
### After releasing a patch version
132
70
133
- If this was a patch release, the maintenance branch must be merged up to master:
71
+ If this was a patch release, the maintenance branch must be merged up to the
72
+ default branch (e.g. 4.1):
134
73
135
74
``` console
136
- $ git checkout master
137
- $ git pull mongodb master
138
- $ git merge vX.Y --strategy=ours
75
+ $ git checkout 4.1
76
+ $ git pull mongodb 4.1
77
+ $ git merge 4.0 --strategy=ours
139
78
$ git push mongodb
140
79
```
141
80
142
81
The ` --strategy=ours ` option ensures that all changes from the merged commits
143
- will be ignored. This is OK because we previously ensured that the ` master `
82
+ will be ignored. This is OK because we previously ensured that the ` 4.1 `
144
83
branch was up-to-date with all code changes in this maintenance branch before
145
84
tagging.
146
85
0 commit comments