You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/dev/RELEASING.md
+33-16Lines changed: 33 additions & 16 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,17 +10,18 @@
10
10
Our release numbers are of the form `MAJOR.MINOR.PATCH.TWEAK`, and we follow
11
11
an almost-semantic-versioning scheme.
12
12
13
-
MAJOR changes are those that break backward-compatibility of the public APIs,
13
+
MAJOR releases are those that break backward-compatibility of the public APIs,
14
14
requiring existing application code to change their source code where it calls
15
15
OIIO API functions in order to compile and work correctly.
16
16
17
-
MINOR changes guarantee API backward-compatibility with prior releases that
17
+
MINOR releases guarantee API backward-compatibility with prior releases that
18
18
have the same major number, but can introduce ABI or link incompatibilities.
19
19
Applications using OIIO need to be recompiled to move to a new minor release,
20
-
but should not need to change their source code. Minor releases are allowed
21
-
to drop support for sufficiently old compilers and dependencies.
20
+
but should not need to change their source code (except, of course, to take
21
+
advantage of new features). Minor releases are allowed to drop support for
22
+
sufficiently old compilers and dependencies.
22
23
23
-
PATCH changes guarantee both API and ABI/link backward-compatibility with
24
+
PATCH releases guarantee both API and ABI/link backward-compatibility with
24
25
prior releases that have the same minor number. Features and new public API
25
26
calls may be added (thus deviating from strict semantic versioning), but only
26
27
if they preserve ABI/link compatibility. This means that standalone functions
@@ -32,7 +33,7 @@ guarantee that any compilers or dependencies supported for the first release
32
33
of a minor series will continue to be supported for all patches to that minor
33
34
series.
34
35
35
-
TWEAK changes are restricted to critical bug fixes or build breaks that do
36
+
TWEAK releases are restricted to critical bug fixes or build breaks that do
36
37
not alter public APIs in any way.
37
38
38
39
### Cadence of releases
@@ -66,10 +67,10 @@ for releases.
66
67
67
68
In the "main" branch:
68
69
69
-
- TWEAK changes within "main" only guarantee ABI back-compatibility, but may
70
+
- TWEAK tags within "main" only guarantee ABI back-compatibility, but may
70
71
have additions or non-bug-fix behavior changes (akin to patch releases
71
72
within a release branch).
72
-
- PATCH changes within "main" are allowed to break ABI or API (changes that
73
+
- PATCH tags within "main" are allowed to break ABI or API (changes that
73
74
would require minor or major releases, if they were not in "main").
74
75
- Beware of unmarked breaks in compatibility of commits in main that are
75
76
in between developer preview tags.
@@ -85,8 +86,8 @@ following conventions:
85
86
86
87
-`main` is the area for arbitrary changes intended for the next year's
87
88
major or minor release.
88
-
-`dev-1.2` are the areas for staging additions to the next month's patch
89
-
release for the designated minor version series.
89
+
-`dev-1.2` are the areas for staging additions that will become the next
90
+
tweak or patch release for the minor version series.
90
91
-`release` is a special branch marker that is always set to the latest tag of
91
92
the currently supported, stable release family. People can count on
92
93
"release" always being the latest stable release, whatever that may be at
@@ -263,17 +264,33 @@ truly critical bugs or build breaks that users will encounter.
263
264
264
265
The following are the steps for making the release:
265
266
266
-
1. Edit the top-level CMakeLists.txt to remove any RC designation
267
-
(i.e., `PROJECT_VERSION_RELEASE_TYPE` should be set to `""`).
267
+
1. Double check the top-level CMakeLists.txt to ensure the right version
268
+
number and type of version designation (i.e.,
269
+
`PROJECT_VERSION_RELEASE_TYPE` should be set appropriately).
268
270
269
271
2. Edit CHANGES.md to reflect the correct date of the release and ensure it
270
272
includes any last-minute changes that were made during beta or release
271
273
candidate stages. Please see the section "Generating release notes" below.
272
274
273
-
3. Push it to **your** GitHub, make sure it passes CI.
275
+
3. Push it to **your** GitHub fork, make sure it passes CI.
274
276
275
-
4. Tag the release: `git tag v1.2.3.4` (no more beta, RC, or dev suffix).
277
+
4. Tag the release with a signed tag:
278
+
279
+
$ git tag -s v1.2.3.4 # add a signed tag
280
+
$ git tag -v v1.2.3.4 # verify the tag
276
281
282
+
Be sure that the tag also reflects if it's an alpha (v1.2.3.4-alpha),
283
+
beta (v1.2.3.4-beta), release candidate (v1.2.3.4-RC1), or developer
284
+
preview (v1.2.3.4-dev). If it's a final release, just use the plain
285
+
version number (v1.2.3.4).
286
+
287
+
Note that the tag signing requires you to have a GPG key set up and
288
+
associated with your GitHub account. Please see [GitHub's signed tagging instructions](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-tags) for more information.
289
+
290
+
If you get errors messages "gpg: signing failed: Inappropriate ioctl for device", then the solution is to first:
291
+
292
+
$ export GPG_TTY=$(tty)
293
+
277
294
5. If this will now be the recommended stable release, move the `release`
278
295
branch marker to the same position.
279
296
@@ -295,9 +312,9 @@ The following are the steps for making the release:
295
312
296
313
For a monthly patch release:
297
314
298
-
> We have tagged v2.5.1.0 as the latest production release and moved the
315
+
> We have tagged v3.0.1.2 as the latest production release and moved the
299
316
> "release" branch marker to that point. This is guaranteed to be API,
300
-
> ABI, and link back-compatible with prior 2.5 releases. Release notes
317
+
> ABI, and link back-compatible with prior 3.0 releases. Release notes
301
318
> can be found at *LINK TO THE GITHUB RELEASE PAGE.*
0 commit comments