git-cai-cli 0.13.4__tar.gz → 0.14.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.pylintrc +4 -4
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/PKG-INFO +55 -1
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/README.md +54 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/docs/git-cai.txt +83 -1
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/docs/man/git-cai.1 +116 -3
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/_version.py +3 -3
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/cli/cli.py +22 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/cli/helptext.py +3 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/cli/modes.py +33 -9
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/config.py +2 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/gitutils.py +65 -0
- git_cai_cli-0.14.0/src/git_cai_cli/core/init.py +206 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/options.py +2 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/squash.py +18 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/validate.py +1 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/main.py +23 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli.egg-info/PKG-INFO +55 -1
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli.egg-info/SOURCES.txt +4 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_modes_integration.py +2 -2
- git_cai_cli-0.14.0/tests/unit/test_init.py +199 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_modes.py +14 -14
- git_cai_cli-0.14.0/tests/unit/test_print.py +80 -0
- git_cai_cli-0.14.0/tests/unit/test_signoff.py +134 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/uv.lock +118 -118
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.caiignore +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.gitattributes +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/cd/.SRCINFO +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/cd/PKGBUILD +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/ci/_version.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/ci/cai_config.ci.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/ci/tokens.ci.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/workflows/python-tests.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/workflows/release.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.github/workflows/release_aur.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.gitignore +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.bandit.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.checkov.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.flake8 +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.ls-lint.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.markdown-link-check.json +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.markdownlint.json +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.proselintrc +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/.yamllint.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/check_git_branch_name.sh +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/lychee.toml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.linters/pyrightconfig.json +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.markdownlintignore +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.mega-linter.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.semgrepignore +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/.trivyignore +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/CLAUDE.md +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/LICENSE +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/Makefile +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/cai_config.yml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/pyproject.toml +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/setup.cfg +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/__init__.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/cli/__init__.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/__init__.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/completion.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/editors.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/languages.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/llm.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/pr.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/prompts_fallback.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/spinner.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli/core/stats.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli.egg-info/dependency_links.txt +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli.egg-info/entry_points.txt +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli.egg-info/requires.txt +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/src/git_cai_cli.egg-info/top_level.txt +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/conftest.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_cli_integration.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_config_integration.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_gitutils_integration.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_options_integration.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_pr_integration.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/integration/test_squash_integration.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_amend.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_branch_context.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_cli.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_completion.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_config.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_conventional.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_gitutils.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_helptext.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_llm.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_main.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_options.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_pr.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_prompt_loading.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_set_config.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_spinner.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_squash.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_stats.py +0 -0
- {git_cai_cli-0.13.4 → git_cai_cli-0.14.0}/tests/unit/test_validate.py +0 -0
|
@@ -66,18 +66,18 @@ check-protected-access-in-special-methods=no
|
|
|
66
66
|
# Don’t warn about protected attr access in dunder methods
|
|
67
67
|
|
|
68
68
|
[DESIGN]
|
|
69
|
-
max-args=
|
|
69
|
+
max-args=25 # Max arguments per function
|
|
70
70
|
max-attributes=12 # Max attributes per class
|
|
71
71
|
max-branches=30 # Max branches per function
|
|
72
|
-
max-locals=
|
|
72
|
+
max-locals=65 # Max locals per function
|
|
73
73
|
max-returns=10 # Max return statements per function
|
|
74
|
-
max-statements=
|
|
74
|
+
max-statements=120 # Max total statements per function
|
|
75
75
|
max-public-methods=20 # Max public methods per class
|
|
76
76
|
min-public-methods=1 # Min public methods per class
|
|
77
77
|
max-nested-blocks=15 # Max nesting depth
|
|
78
78
|
max-bool-expr=15 # Max boolean subexpressions in a condition
|
|
79
79
|
max-parents=7 # Max base classes per class
|
|
80
|
-
max-positional-arguments=
|
|
80
|
+
max-positional-arguments=25 # Max positional arguments per function
|
|
81
81
|
|
|
82
82
|
[EXCEPTIONS]
|
|
83
83
|
overgeneral-exceptions=builtins.BaseException,builtins.Exception
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: git-cai-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Use LLM to create git commit messages
|
|
5
5
|
Author-email: Thorsten Foltz <thorsten.foltz@live.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -77,9 +77,12 @@ Currently supported providers:
|
|
|
77
77
|
- Seamless integration with Git
|
|
78
78
|
- Supports multiple LLM providers and models
|
|
79
79
|
- Global configuration with per-repository overrides
|
|
80
|
+
- Interactive `--init` wizard for first-time setup (provider, token, language, style)
|
|
80
81
|
- Repository-specific language, style, and model selection
|
|
81
82
|
- Amend the last commit message with a regenerated one
|
|
82
83
|
- Conventional Commits format support
|
|
84
|
+
- `Signed-off-by:` (DCO) trailer support via `--signoff`
|
|
85
|
+
- `--print` mode that emits the generated message to stdout for scripting
|
|
83
86
|
- Change configuration from the command line
|
|
84
87
|
- Optional commit squashing with automatic summary generation (all, last N, or up to a specific commit)
|
|
85
88
|
- Pull Request description generator (`--PR`) that summarizes the commits between the current branch and its base
|
|
@@ -144,6 +147,19 @@ The syntax is identical to `.gitignore`.
|
|
|
144
147
|
|
|
145
148
|
## Configuration
|
|
146
149
|
|
|
150
|
+
The fastest way to get started is the interactive wizard:
|
|
151
|
+
|
|
152
|
+
```sh
|
|
153
|
+
git cai --init # or: git cai -I
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
It asks for a default provider, language, style, and emoji preference,
|
|
157
|
+
then collects the API key (input is hidden while you type). The wizard
|
|
158
|
+
writes `~/.config/cai/cai_config.yml` and, for providers that need one,
|
|
159
|
+
`~/.config/cai/tokens.yml` with mode `0600`. Existing entries for other
|
|
160
|
+
providers in `tokens.yml` are preserved. `--init` only writes home-scope
|
|
161
|
+
files — use `-g` / `--generate-config` to bootstrap a repo-level config.
|
|
162
|
+
|
|
147
163
|
On first execution, cai automatically creates the base configuration in your home directory.
|
|
148
164
|
|
|
149
165
|
- Global configuration:
|
|
@@ -241,6 +257,7 @@ git cai -g
|
|
|
241
257
|
- `pr_prompt_file` – optional path to a custom Markdown prompt for `--PR` (falls back to `~/.config/cai/pr_prompt.md`, then a built-in default)
|
|
242
258
|
- `stats` – opt in to local-only usage analytics (per-run row in a SQLite DB at `~/.local/share/git-cai/stats.db`); default `false`.
|
|
243
259
|
No diff content, commit messages, or file paths are stored — only metadata (provider, model, kind, repo name, token counts, latency, settings)
|
|
260
|
+
- `signoff` – append a `Signed-off-by:` trailer (built from git `user.name` / `user.email`) to every commit message; default `false`
|
|
244
261
|
|
|
245
262
|
---
|
|
246
263
|
|
|
@@ -259,11 +276,14 @@ In addition to `git cai`, the following options are available:
|
|
|
259
276
|
- `-g`, `--generate-config` – generate the default `cai_config.yml` in the current directory
|
|
260
277
|
- `-H`, `--set-home` – set a config value in home config (`key=value`), always targets `~/.config/cai/`
|
|
261
278
|
- `-h`, `--help` – show help and available commands
|
|
279
|
+
- `-I`, `--init` – interactive setup wizard (writes home config and tokens.yml)
|
|
262
280
|
- `-i`, `--install-completion` – install shell completion for bash, zsh, or fish
|
|
263
281
|
- `-l`, `--list` – list available information. Valid types: `config`, `editor`, `language`, `model`, `path`, `provider`, `style`
|
|
264
282
|
- `-m`, `--model` – override the model for this invocation (requires `-P`)
|
|
283
|
+
- `-o`, `--signoff` / `--no-signoff` – append a `Signed-off-by:` trailer (uses git `user.name` / `user.email`); applies to commit, amend, and squash modes
|
|
265
284
|
- `-P`, `--provider` – override the LLM provider for this invocation
|
|
266
285
|
- `-p`, `--generate-prompts` – generate default `commit_prompt.md` and `squash_prompt.md` in the current directory (for customization)
|
|
286
|
+
- `--print` – print the generated commit message to stdout and exit without committing (commit/amend modes only; mutually exclusive with `-c`)
|
|
267
287
|
- `-q`, `--sql true|false` – override stats writing for this run (wins over the persisted `stats` config)
|
|
268
288
|
- `-z`, `--stats` – show local-only usage analytics (commits/squashes/PRs per provider, tokens, average latency)
|
|
269
289
|
- `--since YYYY-MM-DD` – filter `--stats` to events on or after this date
|
|
@@ -383,6 +403,40 @@ git cai --stats --reset-stats # wipe all rows
|
|
|
383
403
|
|
|
384
404
|
Rows are split by `kind` (`commit`, `amend`, `squash`, `pr`) and capture provider, model, repo name, token counts, real LLM latency, and a snapshot of the active settings (language, style, emoji, temperature, prompt file).
|
|
385
405
|
|
|
406
|
+
### DCO sign-off
|
|
407
|
+
|
|
408
|
+
Projects that require Developer Certificate of Origin sign-off (Linux
|
|
409
|
+
kernel, many CNCF projects) can have cai append the trailer
|
|
410
|
+
automatically:
|
|
411
|
+
|
|
412
|
+
```sh
|
|
413
|
+
git cai --signoff # one-off
|
|
414
|
+
git cai -o -A # short flag, with amend
|
|
415
|
+
git cai -S signoff=true # enable persistently in the repo config
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
The trailer is built from your git `user.name` and `user.email`. When
|
|
419
|
+
the message already ends in a trailer block (e.g. an existing
|
|
420
|
+
`Co-authored-by:` or another `Signed-off-by:` line), the new sign-off
|
|
421
|
+
is appended to that block without an extra blank line. Re-running with
|
|
422
|
+
`--signoff` on a message that already carries the same trailer is a
|
|
423
|
+
no-op.
|
|
424
|
+
|
|
425
|
+
### Print-only output (no commit)
|
|
426
|
+
|
|
427
|
+
`--print` generates the commit message and writes it to stdout instead
|
|
428
|
+
of opening the editor or committing. Useful for scripting:
|
|
429
|
+
|
|
430
|
+
```sh
|
|
431
|
+
MSG=$(git cai --print)
|
|
432
|
+
git cai --print --conventional --signoff
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
Diagnostic output (spinner, `--time`, `--debug`) goes to stderr, so the
|
|
436
|
+
command substitution above captures only the message. Limited to commit
|
|
437
|
+
and amend modes. Mutually exclusive with `-c` / `--crazy` (which
|
|
438
|
+
commits immediately).
|
|
439
|
+
|
|
386
440
|
### Changing configuration from the CLI
|
|
387
441
|
|
|
388
442
|
Instead of editing YAML files manually, use `--set` or `--set-home` to update config values.
|
|
@@ -47,9 +47,12 @@ Currently supported providers:
|
|
|
47
47
|
- Seamless integration with Git
|
|
48
48
|
- Supports multiple LLM providers and models
|
|
49
49
|
- Global configuration with per-repository overrides
|
|
50
|
+
- Interactive `--init` wizard for first-time setup (provider, token, language, style)
|
|
50
51
|
- Repository-specific language, style, and model selection
|
|
51
52
|
- Amend the last commit message with a regenerated one
|
|
52
53
|
- Conventional Commits format support
|
|
54
|
+
- `Signed-off-by:` (DCO) trailer support via `--signoff`
|
|
55
|
+
- `--print` mode that emits the generated message to stdout for scripting
|
|
53
56
|
- Change configuration from the command line
|
|
54
57
|
- Optional commit squashing with automatic summary generation (all, last N, or up to a specific commit)
|
|
55
58
|
- Pull Request description generator (`--PR`) that summarizes the commits between the current branch and its base
|
|
@@ -114,6 +117,19 @@ The syntax is identical to `.gitignore`.
|
|
|
114
117
|
|
|
115
118
|
## Configuration
|
|
116
119
|
|
|
120
|
+
The fastest way to get started is the interactive wizard:
|
|
121
|
+
|
|
122
|
+
```sh
|
|
123
|
+
git cai --init # or: git cai -I
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
It asks for a default provider, language, style, and emoji preference,
|
|
127
|
+
then collects the API key (input is hidden while you type). The wizard
|
|
128
|
+
writes `~/.config/cai/cai_config.yml` and, for providers that need one,
|
|
129
|
+
`~/.config/cai/tokens.yml` with mode `0600`. Existing entries for other
|
|
130
|
+
providers in `tokens.yml` are preserved. `--init` only writes home-scope
|
|
131
|
+
files — use `-g` / `--generate-config` to bootstrap a repo-level config.
|
|
132
|
+
|
|
117
133
|
On first execution, cai automatically creates the base configuration in your home directory.
|
|
118
134
|
|
|
119
135
|
- Global configuration:
|
|
@@ -211,6 +227,7 @@ git cai -g
|
|
|
211
227
|
- `pr_prompt_file` – optional path to a custom Markdown prompt for `--PR` (falls back to `~/.config/cai/pr_prompt.md`, then a built-in default)
|
|
212
228
|
- `stats` – opt in to local-only usage analytics (per-run row in a SQLite DB at `~/.local/share/git-cai/stats.db`); default `false`.
|
|
213
229
|
No diff content, commit messages, or file paths are stored — only metadata (provider, model, kind, repo name, token counts, latency, settings)
|
|
230
|
+
- `signoff` – append a `Signed-off-by:` trailer (built from git `user.name` / `user.email`) to every commit message; default `false`
|
|
214
231
|
|
|
215
232
|
---
|
|
216
233
|
|
|
@@ -229,11 +246,14 @@ In addition to `git cai`, the following options are available:
|
|
|
229
246
|
- `-g`, `--generate-config` – generate the default `cai_config.yml` in the current directory
|
|
230
247
|
- `-H`, `--set-home` – set a config value in home config (`key=value`), always targets `~/.config/cai/`
|
|
231
248
|
- `-h`, `--help` – show help and available commands
|
|
249
|
+
- `-I`, `--init` – interactive setup wizard (writes home config and tokens.yml)
|
|
232
250
|
- `-i`, `--install-completion` – install shell completion for bash, zsh, or fish
|
|
233
251
|
- `-l`, `--list` – list available information. Valid types: `config`, `editor`, `language`, `model`, `path`, `provider`, `style`
|
|
234
252
|
- `-m`, `--model` – override the model for this invocation (requires `-P`)
|
|
253
|
+
- `-o`, `--signoff` / `--no-signoff` – append a `Signed-off-by:` trailer (uses git `user.name` / `user.email`); applies to commit, amend, and squash modes
|
|
235
254
|
- `-P`, `--provider` – override the LLM provider for this invocation
|
|
236
255
|
- `-p`, `--generate-prompts` – generate default `commit_prompt.md` and `squash_prompt.md` in the current directory (for customization)
|
|
256
|
+
- `--print` – print the generated commit message to stdout and exit without committing (commit/amend modes only; mutually exclusive with `-c`)
|
|
237
257
|
- `-q`, `--sql true|false` – override stats writing for this run (wins over the persisted `stats` config)
|
|
238
258
|
- `-z`, `--stats` – show local-only usage analytics (commits/squashes/PRs per provider, tokens, average latency)
|
|
239
259
|
- `--since YYYY-MM-DD` – filter `--stats` to events on or after this date
|
|
@@ -353,6 +373,40 @@ git cai --stats --reset-stats # wipe all rows
|
|
|
353
373
|
|
|
354
374
|
Rows are split by `kind` (`commit`, `amend`, `squash`, `pr`) and capture provider, model, repo name, token counts, real LLM latency, and a snapshot of the active settings (language, style, emoji, temperature, prompt file).
|
|
355
375
|
|
|
376
|
+
### DCO sign-off
|
|
377
|
+
|
|
378
|
+
Projects that require Developer Certificate of Origin sign-off (Linux
|
|
379
|
+
kernel, many CNCF projects) can have cai append the trailer
|
|
380
|
+
automatically:
|
|
381
|
+
|
|
382
|
+
```sh
|
|
383
|
+
git cai --signoff # one-off
|
|
384
|
+
git cai -o -A # short flag, with amend
|
|
385
|
+
git cai -S signoff=true # enable persistently in the repo config
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
The trailer is built from your git `user.name` and `user.email`. When
|
|
389
|
+
the message already ends in a trailer block (e.g. an existing
|
|
390
|
+
`Co-authored-by:` or another `Signed-off-by:` line), the new sign-off
|
|
391
|
+
is appended to that block without an extra blank line. Re-running with
|
|
392
|
+
`--signoff` on a message that already carries the same trailer is a
|
|
393
|
+
no-op.
|
|
394
|
+
|
|
395
|
+
### Print-only output (no commit)
|
|
396
|
+
|
|
397
|
+
`--print` generates the commit message and writes it to stdout instead
|
|
398
|
+
of opening the editor or committing. Useful for scripting:
|
|
399
|
+
|
|
400
|
+
```sh
|
|
401
|
+
MSG=$(git cai --print)
|
|
402
|
+
git cai --print --conventional --signoff
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
Diagnostic output (spinner, `--time`, `--debug`) goes to stderr, so the
|
|
406
|
+
command substitution above captures only the message. Limited to commit
|
|
407
|
+
and amend modes. Mutually exclusive with `-c` / `--crazy` (which
|
|
408
|
+
commits immediately).
|
|
409
|
+
|
|
356
410
|
### Changing configuration from the CLI
|
|
357
411
|
|
|
358
412
|
Instead of editing YAML files manually, use `--set` or `--set-home` to update config values.
|
|
@@ -15,11 +15,14 @@ SYNOPSIS
|
|
|
15
15
|
[-F | --full-files | --no-full-files] [-f PATH | --files PATH]
|
|
16
16
|
[-g | --generate-config]
|
|
17
17
|
[-H KEY=VALUE | --set-home KEY=VALUE] [-h | --help]
|
|
18
|
+
[-I | --init]
|
|
18
19
|
[-i | --install-completion]
|
|
19
20
|
[-l [config|editor|language|model|path|provider|style] |
|
|
20
21
|
--list [config|editor|language|model|path|provider|style]]
|
|
21
22
|
[-m MODEL | --model MODEL]
|
|
23
|
+
[-o | --signoff | --no-signoff]
|
|
22
24
|
[-P PROVIDER | --provider PROVIDER] [-p | --generate-prompts]
|
|
25
|
+
[--print]
|
|
23
26
|
[-r | --PR] [--base BRANCH]
|
|
24
27
|
[-S KEY=VALUE | --set KEY=VALUE]
|
|
25
28
|
[-s [N|HASH] | --squash [N|HASH]]
|
|
@@ -46,7 +49,16 @@ git-cai behaves like `git commit`, but with the commit message pre-filled:
|
|
|
46
49
|
|
|
47
50
|
SETUP
|
|
48
51
|
-----
|
|
49
|
-
|
|
52
|
+
Guided setup (recommended):
|
|
53
|
+
|
|
54
|
+
- Run `git cai --init` (or `-I`). The interactive wizard asks for a
|
|
55
|
+
default provider, language, style, and emoji preference, then
|
|
56
|
+
collects the API key (hidden input). It writes
|
|
57
|
+
`~/.config/cai/cai_config.yml` and, for providers that need one,
|
|
58
|
+
`~/.config/cai/tokens.yml` with mode `0600`. Existing token entries
|
|
59
|
+
for other providers are preserved.
|
|
60
|
+
|
|
61
|
+
First run / configuration (manual):
|
|
50
62
|
|
|
51
63
|
- Run `git cai` once. If no config exists yet, git-cai creates:
|
|
52
64
|
`~/.config/cai/cai_config.yml` (global config) and ensures default prompt files exist:
|
|
@@ -248,6 +260,28 @@ git cai -H groq.model=llama-3.3-70b
|
|
|
248
260
|
Show a summary of available flags and usage information. When a manual page
|
|
249
261
|
is installed, the full manual is opened instead.
|
|
250
262
|
|
|
263
|
+
-I, --init::
|
|
264
|
+
Run the interactive setup wizard. Bootstraps the home-scope
|
|
265
|
+
configuration only: writes `~/.config/cai/cai_config.yml` and (for
|
|
266
|
+
providers that require one) `~/.config/cai/tokens.yml` with mode
|
|
267
|
+
`0600`.
|
|
268
|
+
+
|
|
269
|
+
The wizard asks for a default provider, language, commit-message
|
|
270
|
+
style, whether to use emoji, and — for providers other than `ollama`
|
|
271
|
+
— the API key. Input for the API key is hidden while you type.
|
|
272
|
+
+
|
|
273
|
+
If `~/.config/cai/cai_config.yml` already exists, the wizard prompts
|
|
274
|
+
before overwriting it. Existing entries in `tokens.yml` for other
|
|
275
|
+
providers are preserved; only the chosen provider's key is updated.
|
|
276
|
+
+
|
|
277
|
+
For repository-level configuration use `-g`/`--generate-config`
|
|
278
|
+
instead — `--init` only writes home-scope files.
|
|
279
|
+
+
|
|
280
|
+
----
|
|
281
|
+
git cai --init
|
|
282
|
+
git cai -I
|
|
283
|
+
----
|
|
284
|
+
|
|
251
285
|
-i, --install-completion::
|
|
252
286
|
Install shell completion for `git cai`. Supports bash, zsh, and fish.
|
|
253
287
|
Completions cover all flags and provider names for `--provider`.
|
|
@@ -286,6 +320,33 @@ git cai -P anthropic -m claude-haiku-4-5
|
|
|
286
320
|
git cai -P ollama -m mistral
|
|
287
321
|
----
|
|
288
322
|
|
|
323
|
+
-o, --signoff / --no-signoff::
|
|
324
|
+
Append a `Signed-off-by:` trailer to the generated commit message
|
|
325
|
+
using your configured git `user.name` and `user.email`. Applies in
|
|
326
|
+
COMMIT, AMEND, and SQUASH modes.
|
|
327
|
+
+
|
|
328
|
+
If the message body already ends in a trailer block (e.g. an existing
|
|
329
|
+
`Co-authored-by:` or `Signed-off-by:` line) the new sign-off is added
|
|
330
|
+
to that block without an extra blank line. A duplicate trailer for the
|
|
331
|
+
same identity is detected and skipped, so re-running with
|
|
332
|
+
`--signoff` on a message that already carries one is a no-op.
|
|
333
|
+
+
|
|
334
|
+
Use `--no-signoff` to explicitly disable for the current run when the
|
|
335
|
+
persisted config has `signoff: true`. To enable permanently:
|
|
336
|
+
+
|
|
337
|
+
----
|
|
338
|
+
git cai -S signoff=true
|
|
339
|
+
----
|
|
340
|
+
+
|
|
341
|
+
Errors out if either git `user.name` or `user.email` is empty.
|
|
342
|
+
+
|
|
343
|
+
----
|
|
344
|
+
git cai --signoff
|
|
345
|
+
git cai -o -c
|
|
346
|
+
git cai -A --signoff
|
|
347
|
+
git cai -s --signoff
|
|
348
|
+
----
|
|
349
|
+
|
|
289
350
|
-P, --provider PROVIDER::
|
|
290
351
|
Override the LLM provider for this invocation. The model and temperature
|
|
291
352
|
from the configuration for that provider are used unless `--model` is also
|
|
@@ -310,6 +371,27 @@ overwrites.
|
|
|
310
371
|
git cai -p
|
|
311
372
|
----
|
|
312
373
|
|
|
374
|
+
--print::
|
|
375
|
+
Generate the commit message, print it to stdout, and exit without
|
|
376
|
+
opening the editor and without committing. Useful for scripting:
|
|
377
|
+
+
|
|
378
|
+
----
|
|
379
|
+
MSG=$(git cai --print)
|
|
380
|
+
----
|
|
381
|
+
+
|
|
382
|
+
Composes with `--conventional`, `--signoff`, `--branch`, `--context`,
|
|
383
|
+
`--provider`, `--model`, and the other modifiers — the printed output
|
|
384
|
+
reflects every modifier as if you were committing.
|
|
385
|
+
+
|
|
386
|
+
Limited to COMMIT and AMEND modes. Mutually exclusive with `--crazy`
|
|
387
|
+
(the two flags are contradictory: `--crazy` commits immediately,
|
|
388
|
+
`--print` does not commit at all).
|
|
389
|
+
+
|
|
390
|
+
Diagnostic output (the spinner, `--time` measurements, `--debug` logs)
|
|
391
|
+
goes to stderr, so command substitution captures only the message.
|
|
392
|
+
Stats recording is unaffected — generations made with `--print` are
|
|
393
|
+
still recorded when stats are enabled.
|
|
394
|
+
|
|
313
395
|
-q, --sql VALUE::
|
|
314
396
|
Per-invocation override for `stats.enabled`. VALUE is `true` or `false`
|
|
315
397
|
(also accepts `yes/no`, `on/off`, `1/0`). Wins over the persisted config
|
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
.\" Title: git-cai
|
|
3
3
|
.\" Author: Thorsten Foltz
|
|
4
4
|
.\" Generator: Asciidoctor 2.0.26
|
|
5
|
-
.\" Date: 2026-05-
|
|
5
|
+
.\" Date: 2026-05-25
|
|
6
6
|
.\" Manual: \ \&
|
|
7
7
|
.\" Source: \ \&
|
|
8
8
|
.\" Language: English
|
|
9
9
|
.\"
|
|
10
|
-
.TH "GIT\-CAI" "1" "2026-05-
|
|
10
|
+
.TH "GIT\-CAI" "1" "2026-05-25" "\ \&" "\ \&"
|
|
11
11
|
.ie \n(.g .ds Aq \(aq
|
|
12
12
|
.el .ds Aq '
|
|
13
13
|
.ss \n[.ss] 0
|
|
@@ -37,11 +37,14 @@ git-cai \- AI\-powered commit message generator
|
|
|
37
37
|
[\-F | \-\-full\-files | \-\-no\-full\-files] [\-f PATH | \-\-files PATH]
|
|
38
38
|
[\-g | \-\-generate\-config]
|
|
39
39
|
[\-H KEY=VALUE | \-\-set\-home KEY=VALUE] [\-h | \-\-help]
|
|
40
|
+
[\-I | \-\-init]
|
|
40
41
|
[\-i | \-\-install\-completion]
|
|
41
42
|
[\-l [config|editor|language|model|path|provider|style] |
|
|
42
43
|
\-\-list [config|editor|language|model|path|provider|style]]
|
|
43
44
|
[\-m MODEL | \-\-model MODEL]
|
|
45
|
+
[\-o | \-\-signoff | \-\-no\-signoff]
|
|
44
46
|
[\-P PROVIDER | \-\-provider PROVIDER] [\-p | \-\-generate\-prompts]
|
|
47
|
+
[\-\-print]
|
|
45
48
|
[\-r | \-\-PR] [\-\-base BRANCH]
|
|
46
49
|
[\-S KEY=VALUE | \-\-set KEY=VALUE]
|
|
47
50
|
[\-s [N|HASH] | \-\-squash [N|HASH]]
|
|
@@ -96,7 +99,25 @@ It opens your configured Git editor so you can review/edit before committing.
|
|
|
96
99
|
.RE
|
|
97
100
|
.SH "SETUP"
|
|
98
101
|
.sp
|
|
99
|
-
|
|
102
|
+
Guided setup (recommended):
|
|
103
|
+
.sp
|
|
104
|
+
.RS 4
|
|
105
|
+
.ie n \{\
|
|
106
|
+
\h'-04'\(bu\h'+03'\c
|
|
107
|
+
.\}
|
|
108
|
+
.el \{\
|
|
109
|
+
. sp -1
|
|
110
|
+
. IP \(bu 2.3
|
|
111
|
+
.\}
|
|
112
|
+
Run \f(CRgit cai \-\-init\fP (or \f(CR\-I\fP). The interactive wizard asks for a
|
|
113
|
+
default provider, language, style, and emoji preference, then
|
|
114
|
+
collects the API key (hidden input). It writes
|
|
115
|
+
\f(CR~/.config/cai/cai_config.yml\fP and, for providers that need one,
|
|
116
|
+
\f(CR~/.config/cai/tokens.yml\fP with mode \f(CR0600\fP. Existing token entries
|
|
117
|
+
for other providers are preserved.
|
|
118
|
+
.RE
|
|
119
|
+
.sp
|
|
120
|
+
First run / configuration (manual):
|
|
100
121
|
.sp
|
|
101
122
|
.RS 4
|
|
102
123
|
.ie n \{\
|
|
@@ -442,6 +463,34 @@ Show a summary of available flags and usage information. When a manual page
|
|
|
442
463
|
is installed, the full manual is opened instead.
|
|
443
464
|
.RE
|
|
444
465
|
.sp
|
|
466
|
+
\-I, \-\-init
|
|
467
|
+
.RS 4
|
|
468
|
+
Run the interactive setup wizard. Bootstraps the home\-scope
|
|
469
|
+
configuration only: writes \f(CR~/.config/cai/cai_config.yml\fP and (for
|
|
470
|
+
providers that require one) \f(CR~/.config/cai/tokens.yml\fP with mode
|
|
471
|
+
\f(CR0600\fP.
|
|
472
|
+
.sp
|
|
473
|
+
The wizard asks for a default provider, language, commit\-message
|
|
474
|
+
style, whether to use emoji, and — for providers other than \f(CRollama\fP
|
|
475
|
+
— the API key. Input for the API key is hidden while you type.
|
|
476
|
+
.sp
|
|
477
|
+
If \f(CR~/.config/cai/cai_config.yml\fP already exists, the wizard prompts
|
|
478
|
+
before overwriting it. Existing entries in \f(CRtokens.yml\fP for other
|
|
479
|
+
providers are preserved; only the chosen provider\(cqs key is updated.
|
|
480
|
+
.sp
|
|
481
|
+
For repository\-level configuration use \f(CR\-g\fP/\f(CR\-\-generate\-config\fP
|
|
482
|
+
instead — \f(CR\-\-init\fP only writes home\-scope files.
|
|
483
|
+
.sp
|
|
484
|
+
.if n .RS 4
|
|
485
|
+
.nf
|
|
486
|
+
.fam C
|
|
487
|
+
git cai \-\-init
|
|
488
|
+
git cai \-I
|
|
489
|
+
.fam
|
|
490
|
+
.fi
|
|
491
|
+
.if n .RE
|
|
492
|
+
.RE
|
|
493
|
+
.sp
|
|
445
494
|
\-i, \-\-install\-completion
|
|
446
495
|
.RS 4
|
|
447
496
|
Install shell completion for \f(CRgit cai\fP. Supports bash, zsh, and fish.
|
|
@@ -498,6 +547,43 @@ git cai \-P ollama \-m mistral
|
|
|
498
547
|
.if n .RE
|
|
499
548
|
.RE
|
|
500
549
|
.sp
|
|
550
|
+
\-o, \-\-signoff / \-\-no\-signoff
|
|
551
|
+
.RS 4
|
|
552
|
+
Append a \f(CRSigned\-off\-by:\fP trailer to the generated commit message
|
|
553
|
+
using your configured git \f(CRuser.name\fP and \f(CRuser.email\fP. Applies in
|
|
554
|
+
COMMIT, AMEND, and SQUASH modes.
|
|
555
|
+
.sp
|
|
556
|
+
If the message body already ends in a trailer block (e.g. an existing
|
|
557
|
+
\f(CRCo\-authored\-by:\fP or \f(CRSigned\-off\-by:\fP line) the new sign\-off is added
|
|
558
|
+
to that block without an extra blank line. A duplicate trailer for the
|
|
559
|
+
same identity is detected and skipped, so re\-running with
|
|
560
|
+
\f(CR\-\-signoff\fP on a message that already carries one is a no\-op.
|
|
561
|
+
.sp
|
|
562
|
+
Use \f(CR\-\-no\-signoff\fP to explicitly disable for the current run when the
|
|
563
|
+
persisted config has \f(CRsignoff: true\fP. To enable permanently:
|
|
564
|
+
.sp
|
|
565
|
+
.if n .RS 4
|
|
566
|
+
.nf
|
|
567
|
+
.fam C
|
|
568
|
+
git cai \-S signoff=true
|
|
569
|
+
.fam
|
|
570
|
+
.fi
|
|
571
|
+
.if n .RE
|
|
572
|
+
.sp
|
|
573
|
+
Errors out if either git \f(CRuser.name\fP or \f(CRuser.email\fP is empty.
|
|
574
|
+
.sp
|
|
575
|
+
.if n .RS 4
|
|
576
|
+
.nf
|
|
577
|
+
.fam C
|
|
578
|
+
git cai \-\-signoff
|
|
579
|
+
git cai \-o \-c
|
|
580
|
+
git cai \-A \-\-signoff
|
|
581
|
+
git cai \-s \-\-signoff
|
|
582
|
+
.fam
|
|
583
|
+
.fi
|
|
584
|
+
.if n .RE
|
|
585
|
+
.RE
|
|
586
|
+
.sp
|
|
501
587
|
\-P, \-\-provider PROVIDER
|
|
502
588
|
.RS 4
|
|
503
589
|
Override the LLM provider for this invocation. The model and temperature
|
|
@@ -534,6 +620,33 @@ git cai \-p
|
|
|
534
620
|
.if n .RE
|
|
535
621
|
.RE
|
|
536
622
|
.sp
|
|
623
|
+
\-\-print
|
|
624
|
+
.RS 4
|
|
625
|
+
Generate the commit message, print it to stdout, and exit without
|
|
626
|
+
opening the editor and without committing. Useful for scripting:
|
|
627
|
+
.sp
|
|
628
|
+
.if n .RS 4
|
|
629
|
+
.nf
|
|
630
|
+
.fam C
|
|
631
|
+
MSG=$(git cai \-\-print)
|
|
632
|
+
.fam
|
|
633
|
+
.fi
|
|
634
|
+
.if n .RE
|
|
635
|
+
.sp
|
|
636
|
+
Composes with \f(CR\-\-conventional\fP, \f(CR\-\-signoff\fP, \f(CR\-\-branch\fP, \f(CR\-\-context\fP,
|
|
637
|
+
\f(CR\-\-provider\fP, \f(CR\-\-model\fP, and the other modifiers — the printed output
|
|
638
|
+
reflects every modifier as if you were committing.
|
|
639
|
+
.sp
|
|
640
|
+
Limited to COMMIT and AMEND modes. Mutually exclusive with \f(CR\-\-crazy\fP
|
|
641
|
+
(the two flags are contradictory: \f(CR\-\-crazy\fP commits immediately,
|
|
642
|
+
\f(CR\-\-print\fP does not commit at all).
|
|
643
|
+
.sp
|
|
644
|
+
Diagnostic output (the spinner, \f(CR\-\-time\fP measurements, \f(CR\-\-debug\fP logs)
|
|
645
|
+
goes to stderr, so command substitution captures only the message.
|
|
646
|
+
Stats recording is unaffected — generations made with \f(CR\-\-print\fP are
|
|
647
|
+
still recorded when stats are enabled.
|
|
648
|
+
.RE
|
|
649
|
+
.sp
|
|
537
650
|
\-q, \-\-sql VALUE
|
|
538
651
|
.RS 4
|
|
539
652
|
Per\-invocation override for \f(CRstats.enabled\fP. VALUE is \f(CRtrue\fP or \f(CRfalse\fP
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.
|
|
22
|
-
__version_tuple__ = version_tuple = (0,
|
|
21
|
+
__version__ = version = '0.14.0'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 14, 0)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'ge467c3583'
|
|
@@ -162,6 +162,23 @@ def callback( # pylint: disable=too-many-arguments,too-many-positional-argument
|
|
|
162
162
|
"--reset-stats",
|
|
163
163
|
help="Delete all rows from the local stats DB.",
|
|
164
164
|
),
|
|
165
|
+
init: bool = typer.Option(
|
|
166
|
+
False,
|
|
167
|
+
"--init",
|
|
168
|
+
"-I",
|
|
169
|
+
help="Interactive setup wizard: writes ~/.config/cai/cai_config.yml and tokens.yml.",
|
|
170
|
+
),
|
|
171
|
+
signoff: bool | None = typer.Option(
|
|
172
|
+
None,
|
|
173
|
+
"--signoff/--no-signoff",
|
|
174
|
+
"-o",
|
|
175
|
+
help="Append a `Signed-off-by:` trailer using git user.name/user.email. Use --no-signoff to disable when the persisted config has it enabled.",
|
|
176
|
+
),
|
|
177
|
+
print_only: bool = typer.Option(
|
|
178
|
+
False,
|
|
179
|
+
"--print",
|
|
180
|
+
help="Generate the commit message, print it to stdout, and exit without committing.",
|
|
181
|
+
),
|
|
165
182
|
):
|
|
166
183
|
"""
|
|
167
184
|
CLI entry point for git-cai-cli.
|
|
@@ -183,6 +200,7 @@ def callback( # pylint: disable=too-many-arguments,too-many-positional-argument
|
|
|
183
200
|
|
|
184
201
|
mode = resolve_mode(
|
|
185
202
|
amend=amend,
|
|
203
|
+
init=init,
|
|
186
204
|
list_flag=list_flag,
|
|
187
205
|
pr=pr,
|
|
188
206
|
squash=squash,
|
|
@@ -212,6 +230,8 @@ def callback( # pylint: disable=too-many-arguments,too-many-positional-argument
|
|
|
212
230
|
time_flag=time_flag,
|
|
213
231
|
context=context,
|
|
214
232
|
files=files,
|
|
233
|
+
print_only=print_only,
|
|
234
|
+
crazy=crazy,
|
|
215
235
|
)
|
|
216
236
|
|
|
217
237
|
if generate_config:
|
|
@@ -289,6 +309,8 @@ def callback( # pylint: disable=too-many-arguments,too-many-positional-argument
|
|
|
289
309
|
stats_since=stats_since,
|
|
290
310
|
stats_json=stats_json,
|
|
291
311
|
stats_reset=stats_reset,
|
|
312
|
+
signoff=signoff,
|
|
313
|
+
print_only=print_only,
|
|
292
314
|
)
|
|
293
315
|
|
|
294
316
|
|
|
@@ -26,12 +26,15 @@ Flags:
|
|
|
26
26
|
-g, --generate-config Generate default cai_config.yml in the current directory
|
|
27
27
|
-H, --set-home KEY=VALUE Set a config value in home config (~/.config/cai/)
|
|
28
28
|
-h, --help Show this help message or opens manual
|
|
29
|
+
-I, --init Interactive setup wizard (writes home config and tokens.yml)
|
|
29
30
|
-i, --install-completion Install shell completion for git-cai
|
|
30
31
|
-l, --list [TYPE] List information. TYPE: config, editor, language,
|
|
31
32
|
model, path, provider, style
|
|
32
33
|
-m, --model NAME Override model for this invocation (requires --provider)
|
|
34
|
+
-o, --signoff Append a `Signed-off-by:` trailer (git user.name / user.email)
|
|
33
35
|
-P, --provider NAME Override LLM provider for this invocation
|
|
34
36
|
-p, --generate-prompts Generate default commit/squash/full_files/pr prompt files
|
|
37
|
+
--print Print the generated commit message to stdout and exit (no commit)
|
|
35
38
|
-q, --sql true|false Override stats writing for this run (wins over config)
|
|
36
39
|
-r, --PR Generate a Pull Request description from the commits on this branch
|
|
37
40
|
--base BRANCH Base branch for --PR (overrides auto-detection)
|