comver
Commit-based semantic versioning - highly configurable and tag-free.
Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (10.7%) to scientific vocabulary
Repository
Commit-based semantic versioning - highly configurable and tag-free.
Basic Info
- Host: GitHub
- Owner: open-nudge
- License: other
- Language: Python
- Default Branch: main
- Homepage: https://open-nudge.github.io/comver
- Size: 10 MB
Statistics
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
comver
Commit-based semantic versioning - highly configurable and tag-free.
✨ Features 🚀 Quick start 📚 Documentation 🤝 Contribute 👍 Adopters 📜 Legal
Features
comver is a tool for calculating semantic versioning of your project using only commit messages - no tags required!
- Separation of concerns: versioning focuses on technical aspects, not marketing. You can now use tags solely for communication.
- Highly configurable: include only relevant commits by filtering via
message,author,email, or even commit path. - Immutable: version is calculated directly from the commit history. Tags can now be used more meaningfully (e.g., to mark a major milestone or release).
- Batteries-included: integrate with pdm, Hatch or uv.
- Verifiable: verify that a specific version was generated from a given commit chain - more resistant to tampering like dependency substitution attacks
Why?
Semantic versioning based on Git tags has a few limitations:
- Teams may avoid bumping the
majorversion due to the perceived weight of the change. Double versioning scheme; one version for technical changes, another for public releases is a viable mitigation. - Tag creation by
bots (e.g. during automated releases) lead to problems withbranch protection(see here). - Not all commits are relevant for release versions
(e.g., CI changes, bot updates, or tooling config),
yet many schemes count them in. With filtering,
comvercan exclude such noise. - Tags are mutable by default and can be re-pointed. By calculating the version
based on commits, and combining it with the commit
shaand a configchecksum, you get verifiable and reproducible results.
Quick start
[!NOTE] You can jump straight into the action and check
comvertutorials.
Installation
```sh
pip install comver ```
Calculate version
[!IMPORTANT] Although written in Python, comver can be used with any programming language.
If your commits follow the Conventional Commits format, run:
```sh
comver calculate ```
This will output a version string in the MAJOR.MINOR.PATCH format:
sh
23.1.3 # Output
[!IMPORTANT] You can use plugins to integrate this versioning scheme with
pdmorhatch. More below!
Configuration
Configuration can be done either in pyproject.toml
(recommended for Python-first project) or in a separate
.comver.toml file (recommended for non-python projects):
| pyproject.toml | .comver.toml |
|---|---|
| ```toml [tool.comver] # Only commits to these paths are considered path_includes = [ "src/*", "pyproject.toml", ] # Commits done by GitHub Actions bot are discarded author_name_excludes = [ "github-actions[bot]", ] ``` | ```toml # No [tool.comver] needed here # Source only commits considered path_includes = [ "src/*", ] # Commits messages with [no version] are discarded message_excludes = [ ".*\[no version\].*", ".*\[skipversion\].*", ] ``` |
[!TIP] See suggested configuration examples here
Integrations
[!NOTE] You can use
comverwithuvby selecting the appropriate build backend, such ashatchling.
To integrate comver with pdm
or hatch add the following to
your pyproject.toml:
| PDM | Hatch |
|---|---|
| ```toml # Register comver for the build process [build-system] build-backend = "pdm.backend" requires = [ "pdm-backend", "comver>=0.1.0", ] # Setup versioning for PDM [tool.pdm.version] source = "call" getter = "comver.plugin:pdm" # Comver-specific settings [tool.comver] ... ``` | ```toml # Register comver for the build process [build-system] build-backend = "hatchling.build" requires = [ "comver>=0.1.0", "hatchling", ] # Setup versioning for Hatchling [tool.hatch.version] source = "comver" # Comver-specific settings [tool.comver] ... ``` |
[!TIP] See more in the documentation
Verification
To verify that a version was produced from the same Git tree and configuration, first use the calculate command with additional flags:
sh
comver calculate --sha --checksum
This outputs three space-separated values:
sh
<VERSION> <SHA> <CHECKSUM>
[!TIP] Append
--format=jsonfor machine-friendly output
Before the next release provide these values to the comver verify
to ensure the version was previously generated from the
same codebase and config:
sh
comver verify <VERSION> <SHA> <CHECKSUM>
If inconsistencies are found, you'll receive feedback, for example:
Provided checksum and the checksum of configuration do not match.
[!TIP] Explore verification workflows in the tutorials
Contribute
We welcome your contributions! Start here:
Legal
- This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
- This project is copyrighted by open-nudge - the appropriate copyright notice is included in each file.
Owner
- Name: opennudge
- Login: open-nudge
- Kind: organization
- Email: opensource@opennudge.com
- Repositories: 1
- Profile: https://github.com/open-nudge
Citation (CITATION.cff)
# SPDX-FileCopyrightText: © 2024 open-nudge <https://github.com/open-nudge> # SPDX-FileContributor: szymonmaszke <github@maszke.co> # # SPDX-License-Identifier: Apache-2.0 --- cff-version: "1.2.0" abstract: >- Commit-based semantic versioning — verifiable, immutable, and tag-free. message: "If you use this software, please cite it as below." authors: - family-names: "open-nudge" url: "https://github.com/open-nudge/comver" repository-code: "https://github.com/open-nudge/comver" title: "comver" license: "Apache-2.0" keywords: - "python"
GitHub Events
Total
- Create event: 5
- Release event: 2
- Issues event: 4
- Push event: 2
- Pull request event: 1
Last Year
- Create event: 5
- Release event: 2
- Issues event: 4
- Push event: 2
- Pull request event: 1
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
- Total maintainers: 1
pypi.org: comver
Commit-based semantic versioning - highly configurable and tag-free.
- Homepage: https://open-nudge.github.io/comver
- Documentation: https://open-nudge.github.io/comver
- License: other
-
Latest release: 0.2.0
published 8 months ago
Rankings
Maintainers (1)
Dependencies
- open-nudge/opentemplate/.github/actions/pdm-compatibility main composite
- pdm-project/setup-pdm 94a823180e06fcde4ad29308721954a521c96ed0 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- github/codeql-action/upload-sarif fca7ace96b7d713c7035871441bd52efbe39e27e composite
- pdm-project/setup-pdm 94a823180e06fcde4ad29308721954a521c96ed0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- open-nudge/opentemplate/.github/actions/pdm-setup main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- open-nudge/opentemplate/.github/actions/git-setup main composite
- open-nudge/opentemplate/.github/actions/pdm-setup main composite
- open-nudge/opentemplate/.github/actions/pull-request main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- docker://rhysd/actionlint 1.7.1 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- actions/labeler 8558fd74291d67161a8a78ce36a881fa63b766a9 composite
- github/issue-labeler c1b0f9f52a63158c4adc09425e858e87b32e9685 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- siderolabs/conform 43d9fb6d85d5f01b391245805eefd258db160197 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- open-nudge/opentemplate/.github/actions/git-setup main composite
- open-nudge/opentemplate/.github/actions/pdm-setup main composite
- open-nudge/opentemplate/.github/actions/pull-request main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- amannn/action-semantic-pull-request 0723387faaf9b38adef4775cd42cfd5155ed6017 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/attest-sbom 115c3be05ff3974bcbd596578934b3f9ce39bf68 composite
- actions/download-artifact d3f86a106a0bac45b974a628896c90dbdf5c8093 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- open-nudge/opentemplate/.github/actions/git-setup main composite
- open-nudge/opentemplate/.github/actions/pdm-compatibility main composite
- open-nudge/opentemplate/.github/actions/pdm-setup main composite
- open-nudge/opentemplate/.github/actions/release-sbom-setup main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- open-nudge/opentemplate/.github/actions/release-sbom-setup main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/download-artifact d3f86a106a0bac45b974a628896c90dbdf5c8093 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- actions/download-artifact d3f86a106a0bac45b974a628896c90dbdf5c8093 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/download-artifact d3f86a106a0bac45b974a628896c90dbdf5c8093 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- pypa/gh-action-pypi-publish 76f52bc884231f62b9a034ebfe128415bbaabdfc composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- suzuki-shunsuke/github-action-renovate-config-validator c22827f47f4f4a5364bdba19e1fe36907ef1318e composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- actions/download-artifact d3f86a106a0bac45b974a628896c90dbdf5c8093 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- open-nudge/opentemplate/.github/actions/git-setup main composite
- open-nudge/opentemplate/.github/actions/pdm-compatibility main composite
- open-nudge/opentemplate/.github/actions/pdm-setup main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- google/osv-scanner/actions/scanner a2a23858b9650035f019219937f91ae615474b4d composite
- open-nudge/opentemplate/.github/actions/sarif-upload main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- actions/upload-artifact ea165f8d65b6e75b540449e92b4886f43607fa02 composite
- github/codeql-action/upload-sarif fca7ace96b7d713c7035871441bd52efbe39e27e composite
- ossf/scorecard-action 05b42c624433fc40578a4040d5cf5e36ddca8cde composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- trufflesecurity/trufflehog 90694bf9af66e7536abc5824e7a87246dbf933cb composite
- actions/checkout 11bd71901bbe5b1630ceea73d27597364c9af683 composite
- open-nudge/opentemplate/.github/actions/pdm-compatibility main composite
- open-nudge/opentemplate/.github/actions/pdm-setup main composite
- open-nudge/opentemplate/.github/actions/sarif-upload main composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite
- actions/stale 5bef64f19d7facfb25b37b414482c7164d639639 composite
- step-security/harden-runner 0634a2670c59f64b4a01f0f96f84700a4088b9f0 composite