A utility (and eventual create) for working with conventional commits in Git repository.
  • Rust 94.8%
  • Nix 4.4%
  • Shell 0.5%
  • Just 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
D. Moonfire 05b3791cd5
chore: updating website metadata
Signed-off-by: D. Moonfire <d.moonfire@moonfire.us>
2026-09-22 23:37:34 -05:00
.config chore: updating website metadata 2026-09-22 23:37:34 -05:00
.local/bin refactor: changing how config works to make it consistent 2026-09-20 13:44:56 -05:00
docs refactor: changing how config works to make it consistent 2026-09-20 13:44:56 -05:00
news docs: updating the versions and adding news 2026-09-20 16:00:56 -05:00
src refactor: changing how config works to make it consistent 2026-09-20 13:44:56 -05:00
.editorconfig build: switched to flake-parts 2026-08-30 23:27:46 -05:00
.envrc refactor: changing how config works to make it consistent 2026-09-20 13:44:56 -05:00
.gitignore chore: updating to allow sign-off commits 2026-09-20 13:52:47 -05:00
.prettierignore build: switched to flake-parts 2026-08-30 23:27:46 -05:00
Cargo.lock docs: updating the versions and adding news 2026-09-20 16:00:56 -05:00
Cargo.toml docs: updating the versions and adding news 2026-09-20 16:00:56 -05:00
CODE_OF_CONDUCT.md chore: initial commit of ideas 2024-03-09 01:00:57 -06:00
DCO.md chore: initial commit of ideas 2024-03-09 01:00:57 -06:00
flake.lock chore: updating easy Rust dependencies 2026-09-12 18:06:13 -05:00
flake.nix build: do not need mfgames-conventional-commit from mfgames-conventional-commit 2026-09-20 13:46:07 -05:00
Justfile feat: introduced package name substitution in paths and tag prefixes 2025-08-11 11:11:07 -05:00
README.md feat: refactored configuration and added documentation 2025-08-13 14:51:16 -05:00
rust-toolchain.toml chore: updating easy Rust dependencies 2026-09-12 18:06:13 -05:00

MfGames Conventional Commit

A small utility that calculates the sematic version from conventional commits in a Git repository.

This utility does only two things: calculate the semantic version from Git commits that conform to the conventional commit specification and provide a lightweight way of running scripts when it changes. It is path-aware which means only commits inside certain directories are included in the calculation. The current version number is built from the highest sematic version tag found in the commit's parents.

For example, the version of "Package1" will be 1.2.4 and "Package2" will be 1.3.0 from the following commits:

$ git log --name-only # filter out unimportant bits
    fix: fixing package1

src/package1/file1.txt

    feat: fixing package2

src/package2/file2.txt

    fix: sweeping change

src/package1/file.txt
src/package2/file.txt

    feat: current version # tagged "Package1-1.2.3" and "Package2-1.2.3"

src/package1/file.txt
src/package2/file.txt

In the above example, the second commit is ignored while calculating the "Package1" commits which will have a new version of "1.3.0" because of the "feat" commit. While calculating "Package2", the version will be "1.2.4" because of the "fix" in the second commit because the first is ignored.

If a version cannot be found, this will use 0.0.1.

Documentation

The documentation for the entire project can be found in the ./docs/ folder of this project