| Crates.io | ccver |
| lib.rs | ccver |
| version | 2.16.15 |
| created_at | 2025-09-25 15:06:37.886528+00 |
| updated_at | 2025-09-25 22:36:48.232618+00 |
| description | a zero dependency tool for Conventional Commits |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1854737 |
| size | 191,805 |
A zero dependency tool for conventional commits and semver
CCVer is a command-line tool designed for automating version management in git repositories. It leverages conventional commit message conventions to help you:
Parse and validate commit messages
Utilize a custom parser built with Pest (src/parser/interpreter.rs & src/parser/rules.pest) to ensure commit messages adhere to a conventional format.
Automate semantic versioning
Extract version and tagging information from commits to automatically bump version numbers following semver principles.
flowchart TD
A[git log] --> C[Parse raw logs with Pest]
C --> D[Create DiGraph]
D --> E[Construct Commit Graph<br>using `CommitGraphData::new`]
E --> F[CommitGraph]
gitGraph
commit id: "initial commit" tag: "0.0.0"
commit id: "unconventional commit" tag: "0.0.0-build.1"
branch staging
branch develop
commit id: "feat: conventional commit" tag: "0.1.0-alpha.1"
branch ryans-fix
commit id: "chore: formatting" tag: "0.1.0-ryans-fix.1"
checkout main
merge ryans-fix id: "Merge branch 'ryans-fix'" tag: "0.1.0"
checkout develop
commit id: "fix: conventional commit" tag: "0.1.1-alpha.1"
commit id: "whooops" tag: "0.1.1-alpha.2"
checkout staging
merge develop id: "Merge branch 'develop'" tag: "0.1.1-rc.1"
merge main id: "Merge branch 'main'" tag: "0.1.1-rc.2"
checkout main
merge staging id: "Merge branch 'staging'" tag: "0.1.1"
checkout develop
commit type: HIGHLIGHT id: "uncommited changes" tag: "0.1.1-build.1"
Provide an extensible CLI
Run various subcommands such as initializing (Init), installing hooks (Install), and tagging commits (Tag) to integrate version management into your workflow.
This tool is ideal for projects that want to maintain a clear commit history and manage releases automatically, all while ensuring that commit messages and version tags meet established conventions.
# Install from source
git clone https://github.com/your-username/ccver.git
cd ccver
cargo install --path .
For contributors, set up pre-commit hooks to ensure code quality:
# Quick setup (installs pre-commit and configures hooks)
./setup-precommit.sh
# Manual setup
pip install pre-commit
pre-commit install
cargo build # Build ccver for version management hook
The pre-commit hooks will automatically run on each commit and include:
cargo fmt - Code formattingcargo clippy - Linting with warnings as errorscargo test - Run all testsCargo.toml version using ccver itself# Build the Docker image
docker build -t ccver .
# Run ccver in a container
docker run --rm -v "$(pwd):/github/workspace" ccver
Use CCVer directly in your GitHub workflows:
- name: Get Version
id: version
uses: your-username/ccver@v1
with:
format: 'v{major}.{minor}.{patch}'
- name: Create Release
uses: actions/create-release@v1
with:
tag_name: ${{ steps.version.outputs.version }}
For detailed Docker and GitHub Action usage instructions, see README-docker.md.