git-atomic 0.1.3

Split multi-component commits into isolated per-component branches
Documentation
[package]
name = "git-atomic"
version = "0.1.3"
edition = "2024"
description = "Split multi-component commits into isolated per-component branches"
license = "MIT"
repository = "https://github.com/aRustyDev/git-atomic"
homepage = "https://github.com/aRustyDev/git-atomic"
keywords = ["git", "atomic", "commits", "branches", "monorepo"]
categories = ["command-line-utilities", "development-tools"]
readme = "README.md"

[package.metadata.git-cliff.bump]
features_always_bump_minor = true
breaking_always_bump_major = true
initial_tag = "v0.1.0"

[package.metadata.git-cliff.changelog]
header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n"
body = """
{% if version %}\
    ## [{{ version | trim_start_matches(pat="v") }}] - {{ timestamp | date(format="%Y-%m-%d") }}
{% else %}\
    ## [Unreleased]
{% endif %}\
{% for group, commits in commits | group_by(attribute="group") %}
    ### {{ group | striptags | trim | upper_first }}
    {% for commit in commits %}
        - {% if commit.scope %}*({{ commit.scope }})* {% endif %}\
            {% if commit.breaking %}[**breaking**] {% endif %}\
            {{ commit.message | upper_first }}\
            {% if commit.github.pr_number %} \
                ([#{{ commit.github.pr_number }}](https://github.com/aRustyDev/git-atomic/pull/{{ commit.github.pr_number }}))\
            {% endif %}\
    {% endfor %}
{% endfor %}
"""
trim = true
footer = "<!-- generated by git-cliff -->"

[package.metadata.git-cliff.git]
conventional_commits = true
filter_unconventional = true
require_conventional = false
split_commits = false
commit_parsers = [
    # Skip merge commits, dependabot, and release commits
    { message = "^Merge", skip = true },
    { body = ".*Signed-off-by: dependabot", skip = true },
    { message = "^chore\\(release\\)", skip = true },

    # Conventional commit types
    { message = "^feat", group = "<!-- 0 -->โœจ Features" },
    { message = "^fix", group = "<!-- 1 -->๐Ÿ› Bug Fixes" },
    { message = "^docs", group = "<!-- 2 -->๐Ÿ“ Documentation" },
    { message = "^perf", group = "<!-- 3 -->โšก Performance" },
    { message = "^refactor", group = "<!-- 4 -->โ™ป๏ธ Refactor" },
    { message = "^style", group = "<!-- 5 -->๐ŸŽจ Styling" },
    { message = "^test", group = "<!-- 6 -->โœ… Testing" },
    { message = "^ci", group = "<!-- 7 -->๐Ÿ‘ท CI/CD" },
    { message = "^chore", group = "<!-- 8 -->๐Ÿ”ง Miscellaneous" },
    { message = "^build", group = "<!-- 9 -->๐Ÿ“ฆ Build" },
    { message = "^revert", group = "<!-- 10 -->โช Reverts" },

    # Gitmoji-only commits (no conventional prefix)
    { message = "^โœจ", group = "<!-- 0 -->โœจ Features" },
    { message = "^๐Ÿ›", group = "<!-- 1 -->๐Ÿ› Bug Fixes" },
    { message = "^๐Ÿš‘", group = "<!-- 1 -->๐Ÿ› Bug Fixes" },
    { message = "^๐Ÿฉน", group = "<!-- 1 -->๐Ÿ› Bug Fixes" },
    { message = "^๐Ÿ“", group = "<!-- 2 -->๐Ÿ“ Documentation" },
    { message = "^โšก", group = "<!-- 3 -->โšก Performance" },
    { message = "^โ™ป๏ธ", group = "<!-- 4 -->โ™ป๏ธ Refactor" },
    { message = "^๐ŸŽจ", group = "<!-- 5 -->๐ŸŽจ Styling" },
    { message = "^๐Ÿ’„", group = "<!-- 5 -->๐ŸŽจ Styling" },
    { message = "^โœ…", group = "<!-- 6 -->โœ… Testing" },
    { message = "^๐Ÿงช", group = "<!-- 6 -->โœ… Testing" },
    { message = "^๐Ÿ‘ท", group = "<!-- 7 -->๐Ÿ‘ท CI/CD" },
    { message = "^๐Ÿ’š", group = "<!-- 7 -->๐Ÿ‘ท CI/CD" },
    { message = "^๐Ÿ”ง", group = "<!-- 8 -->๐Ÿ”ง Miscellaneous" },
    { message = "^๐Ÿ”จ", group = "<!-- 8 -->๐Ÿ”ง Miscellaneous" },
    { message = "^๐Ÿ“ฆ", group = "<!-- 9 -->๐Ÿ“ฆ Build" },
    { message = "^โช", group = "<!-- 10 -->โช Reverts" },
    { message = "^๐Ÿ”’", group = "<!-- 11 -->๐Ÿ”’ Security" },
    { message = "^โฌ†๏ธ", group = "<!-- 12 -->โฌ†๏ธ Dependencies" },
    { message = "^โฌ‡๏ธ", group = "<!-- 12 -->โฌ†๏ธ Dependencies" },
    { message = "^โž•", group = "<!-- 12 -->โฌ†๏ธ Dependencies" },
    { message = "^โž–", group = "<!-- 12 -->โฌ†๏ธ Dependencies" },
    { message = "^๐Ÿ“Œ", group = "<!-- 12 -->โฌ†๏ธ Dependencies" },
    { message = "^๐Ÿ”ฅ", group = "<!-- 13 -->๐Ÿ”ฅ Removed" },
    { message = "^โšฐ๏ธ", group = "<!-- 13 -->๐Ÿ”ฅ Removed" },
    { message = "^๐Ÿ’ฅ", group = "<!-- 14 -->๐Ÿ’ฅ Breaking Changes" },
    { message = "^๐Ÿ—๏ธ", group = "<!-- 14 -->๐Ÿ’ฅ Breaking Changes" },
    { message = "^๐Ÿš€", group = "<!-- 15 -->๐Ÿš€ Deployment" },
    { message = "^๐Ÿ”–", group = "<!-- 15 -->๐Ÿš€ Deployment" },
]
protect_breaking_commits = false
filter_commits = false
fail_on_unmatched_commit = false
tag_pattern = "v[0-9].*"
topo_order = false
topo_order_commits = true
sort_commits = "oldest"
link_parsers = [
    { pattern = "#(\\d+)", href = "https://github.com/aRustyDev/git-atomic/issues/$1" },
    { pattern = "RFC(\\d+)", text = "ietf-rfc$1", href = "https://datatracker.ietf.org/doc/html/rfc$1" },
]
recurse_submodules = false

[package.metadata.git-cliff.remote.github]
owner = "aRustyDev"
repo = "git-atomic"

[dependencies]
clap = { version = "4.5.55", features = ["derive"] }
figment = { version = "0.10.19", features = ["toml", "env"] }
gix = { version = "0.78.0", features = ["tree-editor", "revision"] }
globset = "0.4"
schemars = { version = "1.2.0", features = ["derive"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1"
thiserror = "2.0.18"
owo-colors = "4"
toml = "0.8"
tracing = "0.1"

[dev-dependencies]
assert_cmd = "2"
figment = { version = "0.10.19", features = ["test"] }
glob = "0.3"
insta = { version = "1", features = ["json", "filters"] }
jsonschema = "0.29"
predicates = "3"
proptest = "1"
tempfile = "3"