Skip to content

Commit

Permalink
update version and versioning documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
StevenClontz committed Aug 8, 2021
1 parent 9b476d0 commit 8133578
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 22 deletions.
34 changes: 14 additions & 20 deletions VERSIONING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,17 @@ We use the following versioning design compatible with
<https://www.python.org/dev/peps/pep-0440/>.

- Always zero-index.
- Versions are tracked in `pretext/static/VERSION` (to be imported by both `setup.py` and the CLI itself for display)
- We use `[Major].[Minor]` versioning (with implied `.0` bugfix suffix), whose history is kept in the `master` branch.
- If we discover we need to bugfix a minor release, we create a branch `[Major].[Minor].(N+1)` to fix things and publish the new version, and eventually merge these changes back into `master` for release in `[Major].[Minor+1]`.
- Each version always has at least one release candidate `rc0` for preview. If `rcN` reveals more work and a new preview is needed, `rc(N+1)` is developed. Otherwise a new commit removing the `rcN` is made (this should be the only change from `rcN` to the public release).
- The final commit of a particular release candidate or public release is `git tag`'d as that version and should reflect what's on PyPI.

An illustration of our version history looks something like this:

```
0.0rc0 (untagged) (several unpublished commits)
0.0rc0 (tagged) (one commit, published, further work needed)
0.0rc1 (untagged) (several unpublished commits)
0.0rc1 (tagged) (one commit, published, no further work needed)
0.0 (tagged) (one commit, published)
0.1rc0 (untagged) (several unpublished commits)
0.0.1rc0 (untagged) (branch from 0.0)
0.0.1rc0 (tagged)
0.0.1 (tagged) (merged back into master as part of in-development 0.1rc0)
0.1rc0 (tagged)
```
- Versions are tracked in `pretext/static/VERSION` (to be imported by both `setup.py` and the CLI
itself for display)
- We use `[Major].[Minor].[BugFix]` versioning, whose history is
kept in the `main` branch, with features added via pull requests.
- Commits that aren't released on PyPI will have a `.devN` suffix.
- When `.devN` is deemed ready for release, a single commit chainging this version to `.rcN` is made,
and this is built and released on PyPI. The next commit updates to `.dev(N+1)`.
- If the `rcN` release is deemed final, a new commit removes `.dev(N+1)` and this final release is
released on PyPI.
- The final commit of a particular release candidate or public release is `git tag`'d as that version
reflects what's on PyPI.
- The commit following each release bumps the version to `+0.0.1` the previous version with
`.dev0` set.
- Whenever deemed appropriate, the development version may be upgraded to the next Minor release instead.
3 changes: 1 addition & 2 deletions pretext/static/VERSION
Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
0.5rc0

0.5.0rc0

0 comments on commit 8133578

Please sign in to comment.