2014-06-24 11:36:15 +00:00
|
|
|
Release Policy
|
|
|
|
==============
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
Once or twice a year, a new release is cut off of the master branch and is
|
2015-09-22 22:29:46 +00:00
|
|
|
assigned a 0.X.Y version number, where X is incremented each time a release
|
|
|
|
contains breaking changes, such as changed options or added/removed features,
|
|
|
|
and Y is incremented if a release contains only bugfixes and other minor
|
|
|
|
changes.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2017-04-22 03:07:03 +00:00
|
|
|
Releases are tagged on the master branch and will not be maintained separately.
|
2022-11-13 14:01:34 +00:00
|
|
|
Patch releases may be made if the amount or severity of bugs justify it, or in
|
|
|
|
the event of security issues.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
The goal of releases is to provide Linux distributions with something to
|
|
|
|
package. If you want the newest features, just use the master branch.
|
|
|
|
We try our best to keep it deployable at all times.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
|
|
|
Releases other than the latest release are unsupported and unmaintained.
|
|
|
|
|
|
|
|
Release procedure
|
|
|
|
-----------------
|
|
|
|
|
2017-04-22 03:07:03 +00:00
|
|
|
While on master:
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2019-10-26 09:09:35 +00:00
|
|
|
- Update the `RELEASE_NOTES` file, replacing the previous release notes.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2017-04-22 03:07:03 +00:00
|
|
|
- Update the `VERSION` file.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2024-02-28 16:24:09 +00:00
|
|
|
- Update `DOCS/client-api-changes.rst` (in particular, update the last version
|
|
|
|
number if necessary)
|
|
|
|
|
|
|
|
- Run `TOOLS/gen-interface-changes.py` to refresh `DOCS/interface-changes.rst`,
|
|
|
|
edit manually as necessary.
|
|
|
|
|
|
|
|
- Delete all `.txt` files in the `DOCS/interface-changes` directory except for `example.txt`.
|
2014-08-12 19:55:42 +00:00
|
|
|
|
2019-10-26 09:09:35 +00:00
|
|
|
- Create signed commit with changes.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2017-04-22 03:07:03 +00:00
|
|
|
- Create signed tag v0.X.Y.
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
- Push release branch (`release/0.X`) and tag to GitHub.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
- Create a new GitHub release using the content of `RELEASE_NOTES` related to
|
2014-07-12 11:22:49 +00:00
|
|
|
the new version.
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
- Readd -UNKNOWN suffix to version in `VERSION` file.
|
|
|
|
|
2019-10-26 09:09:35 +00:00
|
|
|
If necessary (to e.g. exclude commits already on master), the release can
|
|
|
|
be done on a branch with different commit history. The release branch **must**
|
|
|
|
then be merged to master so `git describe` will pick up the tag.
|
|
|
|
|
2023-07-17 09:52:31 +00:00
|
|
|
This does not apply to patch releases, which are tagged directly on the
|
|
|
|
`release/0.X` branch. The master branch always remains at v0.X.0.
|
|
|
|
|
2014-06-24 11:36:15 +00:00
|
|
|
Release notes template
|
|
|
|
----------------------
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
Here is a template that can be used for writing the `RELEASE_NOTES` file:
|
2014-06-24 11:36:15 +00:00
|
|
|
|
|
|
|
```markdown
|
2014-07-12 11:22:49 +00:00
|
|
|
Release 0.X.Y
|
|
|
|
=============
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
This release requires FFmpeg <ver> or newer.
|
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
Features
|
|
|
|
--------
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
New
|
|
|
|
~~~
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
- List of new features
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
|
|
|
|
Changed
|
2015-09-22 22:29:46 +00:00
|
|
|
~~~~~~~
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2023-07-17 09:52:31 +00:00
|
|
|
- List of changed features
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
|
|
|
|
Removed
|
2023-07-17 09:52:31 +00:00
|
|
|
~~~~~~~
|
2015-09-22 22:29:46 +00:00
|
|
|
|
2023-07-17 09:52:31 +00:00
|
|
|
- List of removed features
|
2015-09-22 22:29:46 +00:00
|
|
|
|
|
|
|
|
|
|
|
Options and Commands
|
|
|
|
--------------------
|
|
|
|
|
|
|
|
Added
|
|
|
|
~~~~~
|
|
|
|
|
|
|
|
- List of added options and commands
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
Changed
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
- List of changed options and commands
|
|
|
|
|
|
|
|
|
|
|
|
Deprecated
|
|
|
|
~~~~~~~~~~
|
|
|
|
|
|
|
|
- List of deprecated options and commands
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
Removed
|
|
|
|
~~~~~~~
|
|
|
|
|
|
|
|
- List of removed options and commands
|
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
|
2015-09-22 22:29:46 +00:00
|
|
|
Fixes and Minor Enhancements
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
- List of fixes and minor enhancements
|
2014-06-24 11:36:15 +00:00
|
|
|
|
2022-11-13 14:01:34 +00:00
|
|
|
|
|
|
|
This listing is not complete. Check DOCS/client-api-changes.rst for a history
|
|
|
|
of changes to the client API, and DOCS/interface-changes.rst for a history
|
|
|
|
of changes to other user-visible interfaces.
|
|
|
|
|
|
|
|
A complete changelog can be seen by running `git log <start>..<end>`
|
|
|
|
in the git repository.
|
2014-06-24 11:36:15 +00:00
|
|
|
```
|
2014-07-12 11:22:49 +00:00
|
|
|
|
|
|
|
When creating a new point release its changes should be added on top of the
|
2015-09-22 22:29:46 +00:00
|
|
|
`RELEASE_NOTES` file (with the appropriate title) so that all the changes in
|
|
|
|
the current 0.X branch will be included. This way the `RELEASE_NOTES` file
|
2014-07-12 11:22:49 +00:00
|
|
|
can be used by distributors as changelog for point releases too.
|
2023-07-17 09:52:31 +00:00
|
|
|
|
|
|
|
The changelog of lists all changes since the last release, including those
|
|
|
|
that have been backported to patch releases already.
|
|
|
|
|
|
|
|
Some additional advice:
|
|
|
|
- Especially for features, try to reword the messages so that the user-visible
|
|
|
|
change is clear to the reader. But don't simplify too much or be too verbose.
|
|
|
|
- It often makes sense to merge multiple related changes into one line
|
|
|
|
- Changes that have been made and reverted within the same release must not
|
|
|
|
appear in the changelog
|
|
|
|
- Limit the "Options and Commands" section to relevant changes
|
|
|
|
- When filling in the GitHub release, remove the "Release 0.X.Y" heading
|