project: document modern branch and tag practices

Signed-off-by: Bjorn Neergaard <bjorn.neergaard@docker.com>
This commit is contained in:
Bjorn Neergaard 2023-11-03 10:13:51 -06:00
parent ed1a61dcb7
commit f502f49e49
No known key found for this signature in database

View file

@ -1,32 +1,39 @@
Branches and tags
=================
Note: details of the release process for the Engine are documented in the
[PATCH-RELEASES.md](https://github.com/moby/moby/blob/master/project/PATCH-RELEASES.md).
> Note: details of the release process of the project are documented in [PATCH-RELEASES.md](PATCH-RELEASES.md).
# Branches
The docker/docker repository should normally have only three living branches at all time, including
the regular `master` branch:
`master` serves as the development branch for future releases of the project.
All changes should be made to the `master` branch, and changes to release branches should only be made in the form of cherry-picked commits, if possible.
The sponsoring maintainers of a release branch serve as the primary point of contact, and are available to provide guidance on contributing changes to their respective branches.
## `docs` branch
Keep in mind that release branches only accept bug and security fixes; new features will generally not be considered for backport to release branches.
The `docs` branch supports documentation updates between product releases. This branch allow us to
decouple documentation releases from product releases.
Currently (and previously) maintained release branches are documented in the table below:
## `release` branch
| Branch Name | Sponsoring Maintainer(s) | Contribution Status | Expected End of Maintenance | Known Distributors |
|------------------------------------------------|------------------------------------------------|-----------------------|------------------------------|----------------------------------------------------------------------|
| master (development branch) | The Moby Project [MAINTAINERS](../MAINTAINERS) | N/A | - | N/A |
| 24.0 | @thaJeztah, @rumpl, @neersighted | Maintained | TBD | [Docker, Inc.](https://docker.com) |
| 23.0 | @corhere, @cpuguy83 | Maintained | TBD | [Mirantis](https://mirantis.com), [Microsoft](https://microsoft.com) |
| 20.10 | @corhere, @cpuguy83 | Maintained (security) | December 2023 | [Mirantis](https://mirantis.com), [Microsoft](https://microsoft.com) |
The `release` branch contains the last _released_ version of the code for the project.
> Note: The Moby Project provides source code releases. Binary distributions are available from multiple contributing parties, and known distributions can be discovered in [PACKAGERS.md](PACKAGERS.md).
The `release` branch is only updated at each public release of the project. The mechanism for this
is that the release is materialized by a pull request against the `release` branch which lives for
the duration of the code freeze period. When this pull request is merged, the `release` branch gets
updated, and its new state is tagged accordingly.
## Contribution Status
The contribution status of a branch is meant to set contributor expectations for acceptance of changes into a branch, as well as document what level of contribution or maintenance the sponsoring maintainers expect to perform. This status is informational and not binding.
- **Maintained** - actively developed by project maintainers; accepting contributions and backports; in-scope for security advisories
- **Maintained (security)** - no longer actively developed; may accept contributions and backports for critical security issues; in-scope for security advisories
- **Unmaintained** - no longer actively developed; not accepting contributions; out-of-scope for security advisories
# Tags
Any public release of a compiled binary, with the logical exception of nightly builds, should have
a corresponding tag in the repository.
All releases of The Moby Project should have a corresponding tag in the repository.
The project generally attempts to adhere to [Semantic Versioning](https://semver.org) whenever possible.
The general format of a tag is `vX.Y.Z[-suffix[N]]`: