ace-git-commit 0.23.0
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.
- checksums.yaml +7 -0
- data/.ace-defaults/git/commit.yml +22 -0
- data/.ace-defaults/nav/protocols/guide-sources/ace-git-commit.yml +10 -0
- data/.ace-defaults/nav/protocols/prompt-sources/ace-git-commit.yml +19 -0
- data/.ace-defaults/nav/protocols/wfi-sources/ace-git-commit.yml +19 -0
- data/CHANGELOG.md +404 -0
- data/COMPARISON.md +176 -0
- data/LICENSE +21 -0
- data/README.md +44 -0
- data/Rakefile +14 -0
- data/exe/ace-git-commit +13 -0
- data/handbook/guides/version-control-system-message.g.md +507 -0
- data/handbook/prompts/git-commit.md +22 -0
- data/handbook/prompts/git-commit.system.md +150 -0
- data/handbook/skills/as-git-commit/SKILL.md +57 -0
- data/handbook/workflow-instructions/git/commit.wf.md +75 -0
- data/lib/ace/git_commit/atoms/git_executor.rb +62 -0
- data/lib/ace/git_commit/atoms/gitignore_checker.rb +118 -0
- data/lib/ace/git_commit/cli/commands/commit.rb +147 -0
- data/lib/ace/git_commit/cli.rb +23 -0
- data/lib/ace/git_commit/models/commit_group.rb +53 -0
- data/lib/ace/git_commit/models/commit_options.rb +75 -0
- data/lib/ace/git_commit/models/split_commit_result.rb +60 -0
- data/lib/ace/git_commit/models/stage_result.rb +71 -0
- data/lib/ace/git_commit/molecules/commit_grouper.rb +123 -0
- data/lib/ace/git_commit/molecules/commit_summarizer.rb +43 -0
- data/lib/ace/git_commit/molecules/diff_analyzer.rb +111 -0
- data/lib/ace/git_commit/molecules/file_stager.rb +153 -0
- data/lib/ace/git_commit/molecules/message_generator.rb +438 -0
- data/lib/ace/git_commit/molecules/path_resolver.rb +365 -0
- data/lib/ace/git_commit/molecules/split_commit_executor.rb +272 -0
- data/lib/ace/git_commit/organisms/commit_orchestrator.rb +330 -0
- data/lib/ace/git_commit/version.rb +7 -0
- data/lib/ace/git_commit.rb +41 -0
- metadata +149 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 88f062920b9470215101e8b19910d1b4f51e48422e33b5e9ee7edd1a67436c2a
|
|
4
|
+
data.tar.gz: a066dca342be804a4ecb86fe2d742ad095144830bf75dd6db401521bf82f5215
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 8edb440e5469e1352742e300161a642f31b987a6aac90919eb2f38b136fd1dcf6581ebfe4b41df9dd218fb8c01be44aa543bc5c39f1227005ebd2023ce8b9e2a
|
|
7
|
+
data.tar.gz: e94e923c63058307f418eb2aaafbb9ced3b2737b6318839cf3fca5f13bc9543ec2494afd82a3387b5928828ab36eac0ae6b1e7ec422b286c3c8b3a501eed4f5b
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Minimal ace-git-commit configuration
|
|
2
|
+
# Copy to .ace/git/commit.yml and customize for your project
|
|
3
|
+
|
|
4
|
+
git:
|
|
5
|
+
# LLM model for commit message generation
|
|
6
|
+
model: glite # or gpt4, claude, etc. - must match provider alias
|
|
7
|
+
|
|
8
|
+
# Commit message conventions
|
|
9
|
+
conventions:
|
|
10
|
+
format: conventional # conventional, simple, or detailed
|
|
11
|
+
|
|
12
|
+
scopes:
|
|
13
|
+
enabled: true
|
|
14
|
+
detect_from_paths: true
|
|
15
|
+
|
|
16
|
+
# Add your project-specific scopes
|
|
17
|
+
custom:
|
|
18
|
+
- core
|
|
19
|
+
- api
|
|
20
|
+
- ui
|
|
21
|
+
- docs
|
|
22
|
+
- test
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
# Prompt Sources Protocol Configuration for ace-git-commit gem
|
|
3
|
+
# This enables prompt discovery from the installed ace-git-commit gem
|
|
4
|
+
|
|
5
|
+
name: ace-git-commit
|
|
6
|
+
type: gem
|
|
7
|
+
description: System prompts from ace-git-commit gem
|
|
8
|
+
priority: 10
|
|
9
|
+
|
|
10
|
+
# Configuration for prompt discovery within the gem
|
|
11
|
+
config:
|
|
12
|
+
# Relative path within the gem (default: handbook/prompts)
|
|
13
|
+
relative_path: handbook/prompts
|
|
14
|
+
|
|
15
|
+
# Pattern for finding prompt files (supports both *.md and *.prompt.md)
|
|
16
|
+
pattern: "*.md"
|
|
17
|
+
|
|
18
|
+
# Enable discovery
|
|
19
|
+
enabled: true
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
# WFI Sources Protocol Configuration for ace-git-commit gem
|
|
3
|
+
# This enables workflow discovery from the installed ace-git-commit gem
|
|
4
|
+
|
|
5
|
+
name: ace-git-commit
|
|
6
|
+
type: gem
|
|
7
|
+
description: Workflow instructions from ace-git-commit gem
|
|
8
|
+
priority: 10
|
|
9
|
+
|
|
10
|
+
# Configuration for workflow discovery within the gem
|
|
11
|
+
config:
|
|
12
|
+
# Relative path within the gem (default: handbook/workflow-instructions)
|
|
13
|
+
relative_path: handbook/workflow-instructions
|
|
14
|
+
|
|
15
|
+
# Pattern for finding workflow files (default: *.wf.md)
|
|
16
|
+
pattern: "*.wf.md"
|
|
17
|
+
|
|
18
|
+
# Enable discovery
|
|
19
|
+
enabled: true
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to ace-git-commit will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.23.0] - 2026-03-23
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Configuration section in README pointing to `.ace-defaults/git/commit.yml` for model overrides and `.ace-handbook/prompts/` for prompt template customization.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
- Aligned gemspec summary with README tagline.
|
|
17
|
+
- Moved Installation from README to Getting Started guide as a proper section.
|
|
18
|
+
- Redesigned getting-started demo tape: sandbox with real commits (specific files, then remaining), replaces dry-run-only scenes.
|
|
19
|
+
- Re-recorded getting-started demo GIF from new tape.
|
|
20
|
+
|
|
21
|
+
## [0.22.1] - 2026-03-23
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
- Refreshed the package README to the current ACE package layout pattern with updated section flow and docs navigation links.
|
|
25
|
+
|
|
26
|
+
## [0.22.0] - 2026-03-18
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- Refined `TS-COMMIT-001` E2E runner guidance so each goal is self-contained and no longer depends on prior discovery output.
|
|
30
|
+
|
|
31
|
+
### Technical
|
|
32
|
+
- Normalized `TS-COMMIT-001` verifier expectation formatting for clearer impact-first evidence checks.
|
|
33
|
+
- Added task-scoped E2E review, change-plan, and rewrite-summary artifacts for `8qe.t.h5e.6`.
|
|
34
|
+
|
|
35
|
+
## [0.21.6] - 2026-03-18
|
|
36
|
+
|
|
37
|
+
### Changed
|
|
38
|
+
- Migrated CLI namespace from `Ace::Core::CLI::*` to `Ace::Support::Cli::*` (ace-support-cli is now the canonical home for CLI infrastructure).
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
## [0.21.5] - 2026-03-15
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
- Fixed commit workflow embedded status using `git status -sb -uall` to show individual untracked files instead of collapsed directory entries.
|
|
45
|
+
- Added explicit guidance that untracked files (`??`) are committable changes, preventing agents from incorrectly reporting "nothing to commit" on untracked-only changes.
|
|
46
|
+
|
|
47
|
+
### Changed
|
|
48
|
+
- Migrated CLI framework from dry-cli to ace-support-cli
|
|
49
|
+
|
|
50
|
+
## [0.21.4] - 2026-03-13
|
|
51
|
+
|
|
52
|
+
### Technical
|
|
53
|
+
- Harmonized canonical git-commit skill structure with the unified execution contract.
|
|
54
|
+
|
|
55
|
+
## [0.21.3] - 2026-03-13
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
- Replaced provider-specific Codex execution metadata on the canonical `as-git-commit` skill with a unified canonical skill body that declares arguments, variables, and explicit workflow-execution guidance.
|
|
59
|
+
- Limited provider-specific forking for `as-git-commit` to Claude frontmatter only.
|
|
60
|
+
|
|
61
|
+
## [0.21.2] - 2026-03-13
|
|
62
|
+
|
|
63
|
+
### Changed
|
|
64
|
+
- Updated the canonical `as-git-commit` Codex metadata to use `context: ace-llm` with frontmatter-driven variable and instruction rendering for projected Codex skills.
|
|
65
|
+
|
|
66
|
+
## [0.21.1] - 2026-03-12
|
|
67
|
+
|
|
68
|
+
### Changed
|
|
69
|
+
- Updated README prompt-path guidance to reference the package-local handbook prompt source.
|
|
70
|
+
|
|
71
|
+
## [0.21.0] - 2026-03-12
|
|
72
|
+
|
|
73
|
+
### Added
|
|
74
|
+
- Added provider-specific Claude and Codex execution overrides to the canonical `as-git-commit` skill so projected provider skills can request forked execution with provider-specific models.
|
|
75
|
+
|
|
76
|
+
## [0.20.0] - 2026-03-10
|
|
77
|
+
|
|
78
|
+
### Added
|
|
79
|
+
- Added the canonical handbook-owned git commit skill for agent-facing commit generation.
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
## [0.19.2] - 2026-03-08
|
|
83
|
+
|
|
84
|
+
### Fixed
|
|
85
|
+
- Improved split-commit message generation reliability by replacing brittle marker parsing with strict JSON batch parsing, validation, and one repair retry.
|
|
86
|
+
- Removed generic `chore: update <scope>` fallback for missing batch messages; split commits now fall back to per-scope message generation when batch parsing fails.
|
|
87
|
+
|
|
88
|
+
### Changed
|
|
89
|
+
- Strengthened git-commit prompting guidance to reduce generic `chore` usage for feature/fix/refactor-level code changes.
|
|
90
|
+
|
|
91
|
+
### Technical
|
|
92
|
+
- Added regression tests for JSON batch parsing, retry behavior, and per-scope fallback message generation in split commit execution.
|
|
93
|
+
|
|
94
|
+
## [0.19.1] - 2026-03-05
|
|
95
|
+
|
|
96
|
+
### Fixed
|
|
97
|
+
- Cap `max_tokens` at 8192 for commit message generation to prevent inflated thinking budgets from the provider's global 65536 default.
|
|
98
|
+
|
|
99
|
+
## [0.19.0] - 2026-03-03
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
- Group all `.ace/` config files into a single "ace-config" commit scope instead of creating separate per-package commits.
|
|
103
|
+
|
|
104
|
+
## [0.18.8] - 2026-02-26
|
|
105
|
+
|
|
106
|
+
### Fixed
|
|
107
|
+
- Run normal stage-all flow before deciding no-op, instead of short-circuiting at the top of execution.
|
|
108
|
+
- Correct change detection to include untracked files via `ace-git` command executor helpers.
|
|
109
|
+
- Preserve single-line no-op output: `No changes to commit` is printed only after staging confirms nothing is staged.
|
|
110
|
+
|
|
111
|
+
## [0.18.7] - 2026-02-26
|
|
112
|
+
|
|
113
|
+
### Fixed
|
|
114
|
+
- Treat "no changes to commit" as a successful no-op (exit 0) instead of a failure.
|
|
115
|
+
- Simplify no-op output to a single clear line: `No changes to commit` (without staging progress or generic failure messaging).
|
|
116
|
+
|
|
117
|
+
## [0.18.6] - 2026-02-25
|
|
118
|
+
|
|
119
|
+
### Technical
|
|
120
|
+
- Bump runtime dependency constraint from `ace-git ~> 0.10` to `ace-git ~> 0.11`.
|
|
121
|
+
|
|
122
|
+
## [0.18.5] - 2026-02-23
|
|
123
|
+
|
|
124
|
+
### Technical
|
|
125
|
+
- Updated internal dependency version constraints to current releases
|
|
126
|
+
|
|
127
|
+
## [0.18.4] - 2026-02-22
|
|
128
|
+
|
|
129
|
+
### Changed
|
|
130
|
+
- Migrate CLI entrypoint to single-command dry-cli execution (`ace-git-commit [FILES] [OPTIONS]`)
|
|
131
|
+
- Handle `--version` directly in commit command flow for single-command mode
|
|
132
|
+
- Add `--staged` as an alias for `--only-staged`
|
|
133
|
+
|
|
134
|
+
### Technical
|
|
135
|
+
- Remove registry/default-routing wiring from CLI module
|
|
136
|
+
- Rewrite CLI routing tests to executable-level single-command behavior checks
|
|
137
|
+
|
|
138
|
+
## [0.18.2] - 2026-02-21
|
|
139
|
+
|
|
140
|
+
### Added
|
|
141
|
+
- Enhance commit message generation with intent and action focus
|
|
142
|
+
|
|
143
|
+
### Technical
|
|
144
|
+
- Add staged rename verification to mixed operations test
|
|
145
|
+
- Standardize workflow instruction path
|
|
146
|
+
|
|
147
|
+
## [0.18.1] - 2026-02-19
|
|
148
|
+
|
|
149
|
+
### Technical
|
|
150
|
+
- Namespace commit workflow instruction to git/ subdirectory
|
|
151
|
+
|
|
152
|
+
## [0.18.0] - 2026-02-19
|
|
153
|
+
|
|
154
|
+
### Added
|
|
155
|
+
- "This commit will..." test in subject-crafting step to improve intent capture
|
|
156
|
+
- "Describe the action, not the content" guidance with concrete examples
|
|
157
|
+
- Specific handling for deletion-only commits (use "remove", "delete", "drop" verbs)
|
|
158
|
+
|
|
159
|
+
## [0.17.2] - 2026-02-11
|
|
160
|
+
|
|
161
|
+
### Added
|
|
162
|
+
- Exception-based CLI error reporting for consistent error handling
|
|
163
|
+
|
|
164
|
+
### Technical
|
|
165
|
+
- Migrate E2E tests to per-TC directory format
|
|
166
|
+
- Enhance E2E tests for commit splitting and path handling
|
|
167
|
+
- Standardize E2E test cache directory naming
|
|
168
|
+
|
|
169
|
+
## [0.17.1] - 2026-01-27
|
|
170
|
+
|
|
171
|
+
### Added
|
|
172
|
+
- Add `spec` commit type for task specifications and development artifacts
|
|
173
|
+
- Clarify `docs` type is for software documentation (user guides, API docs, README)
|
|
174
|
+
|
|
175
|
+
## [0.17.0] - 2026-01-27
|
|
176
|
+
|
|
177
|
+
### Added
|
|
178
|
+
- Path-based configuration splitting for scoped commits in mono-repos
|
|
179
|
+
- Batch LLM generation for multiple commit scopes in a single run
|
|
180
|
+
- Automatic scope detection based on file paths and glob patterns
|
|
181
|
+
- Support for scope-specific model overrides and type hints
|
|
182
|
+
- `scopes` configuration in `.ace/git/commit.yml` for defining file groupings
|
|
183
|
+
|
|
184
|
+
### Changed
|
|
185
|
+
- Enhanced commit workflow to support multiple atomic commits per scope
|
|
186
|
+
- Improved configuration resolution with path rules from ace-support-config
|
|
187
|
+
|
|
188
|
+
## [0.16.5] - 2026-01-20
|
|
189
|
+
|
|
190
|
+
### Fixed
|
|
191
|
+
- Validate paths by checking git status for deleted/renamed files
|
|
192
|
+
|
|
193
|
+
### Technical
|
|
194
|
+
- Update for ace-bundle integration
|
|
195
|
+
|
|
196
|
+
## [0.16.4] - 2026-01-16
|
|
197
|
+
|
|
198
|
+
### Changed
|
|
199
|
+
- Rename context: to bundle: keys in configuration files
|
|
200
|
+
|
|
201
|
+
## [0.16.3] - 2026-01-10
|
|
202
|
+
|
|
203
|
+
### Changed
|
|
204
|
+
- Use shared `Ace::Core::CLI::DryCli::DefaultRouting` module for CLI routing
|
|
205
|
+
- Removed duplicate routing code in favor of shared implementation
|
|
206
|
+
- Maintains same behavior with less code duplication
|
|
207
|
+
|
|
208
|
+
## [0.16.2] - 2026-01-10
|
|
209
|
+
|
|
210
|
+
### Fixed
|
|
211
|
+
- Fix CLI default command routing to properly handle flags
|
|
212
|
+
- Removed flawed `!args.first.start_with?("-")` check from routing condition
|
|
213
|
+
- Flags like `-i`, `--dry-run` now correctly route to default `commit` command
|
|
214
|
+
- Built-in flags (`--help`, `--version`) continue working via KNOWN_COMMANDS
|
|
215
|
+
|
|
216
|
+
## [0.16.1] - 2026-01-09
|
|
217
|
+
|
|
218
|
+
### Changed
|
|
219
|
+
- **BREAKING**: Eliminate wrapper pattern in dry-cli command
|
|
220
|
+
- Merged business logic directly into `Commit` dry-cli command class
|
|
221
|
+
- Deleted `commit_command.rb` wrapper file
|
|
222
|
+
- Simplified architecture by removing unnecessary delegation layer
|
|
223
|
+
|
|
224
|
+
## [0.16.0] - 2026-01-07
|
|
225
|
+
|
|
226
|
+
### Changed
|
|
227
|
+
- **BREAKING**: Migrated CLI framework from Thor to dry-cli (task 179.07)
|
|
228
|
+
- Replaced `thor` dependency with `dry-cli ~> 1.0`
|
|
229
|
+
- Created dry-cli command class (commit)
|
|
230
|
+
- Uses `Ace::Core::CLI::DryCli::Base` module for CLI helpers
|
|
231
|
+
|
|
232
|
+
## [0.15.2] - 2026-01-04
|
|
233
|
+
|
|
234
|
+
### Fixed
|
|
235
|
+
|
|
236
|
+
- ace-git-commit now respects `.gitignore` when staging directory paths
|
|
237
|
+
- Directories are passed directly to `git add` without file expansion
|
|
238
|
+
- Fixed issue where `ace-git-commit .ace-taskflow/` would try to stage files in gitignored subdirectories like `reviews/`
|
|
239
|
+
- Only glob patterns are expanded to file lists through PathResolver
|
|
240
|
+
|
|
241
|
+
## [0.15.1] - 2026-01-03
|
|
242
|
+
|
|
243
|
+
### Changed
|
|
244
|
+
|
|
245
|
+
- Enhanced `commit` workflow with `embed_document_source: true` to embed `<current_repository_status>`
|
|
246
|
+
- Workflow now includes pre-loaded git status and diff summary, eliminating redundant commands
|
|
247
|
+
- Reduced tool calls from 5 to 2-3 (40-60% improvement) when agents invoke `/ace:commit`
|
|
248
|
+
|
|
249
|
+
## [0.15.0] - 2026-01-03
|
|
250
|
+
|
|
251
|
+
### Changed
|
|
252
|
+
- **BREAKING**: Minimum Ruby version raised to 3.3.0 (was 3.0.0)
|
|
253
|
+
- Standardized gemspec file patterns with deterministic Dir.glob
|
|
254
|
+
- Added MIT LICENSE file
|
|
255
|
+
|
|
256
|
+
## [0.14.1] - 2025-12-30
|
|
257
|
+
|
|
258
|
+
### Changed
|
|
259
|
+
|
|
260
|
+
- Replace ace-support-core dependency with ace-config for configuration cascade
|
|
261
|
+
- Migrate from Ace::Core to Ace::Config.create() API
|
|
262
|
+
- Migrate from `resolve_for` to `resolve_namespace` for cleaner config loading
|
|
263
|
+
|
|
264
|
+
## [0.14.0] - 2025-12-30
|
|
265
|
+
|
|
266
|
+
### Changed
|
|
267
|
+
|
|
268
|
+
* Rename `.ace.example/` to `.ace-defaults/` for gem defaults directory
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
## [0.13.0] - 2025-12-28
|
|
272
|
+
|
|
273
|
+
### Added
|
|
274
|
+
- **ADR-022 Configuration Pattern**: Migrate to gem defaults from `.ace.example/` with user override support
|
|
275
|
+
- Load defaults from `.ace.example/git/commit.yml` at runtime
|
|
276
|
+
- Deep merge with user config via ace-core cascade
|
|
277
|
+
- Follows "gem defaults < user config" priority
|
|
278
|
+
|
|
279
|
+
### Fixed
|
|
280
|
+
- **Path Expansion**: Fixed gem root resolution in `load_gem_defaults` (4 levels instead of 5)
|
|
281
|
+
- **Debug Check Consistency**: Standardized `debug?` method to use `== "1"` pattern across all gems
|
|
282
|
+
|
|
283
|
+
## [0.12.4] - 2025-12-27
|
|
284
|
+
|
|
285
|
+
### Changed
|
|
286
|
+
- **Dependency Migration**: Migrated from `ace-git-diff (~> 0.1)` to `ace-git (~> 0.3)`
|
|
287
|
+
- GitExecutor now delegates to `Ace::Git::Atoms::CommandExecutor`
|
|
288
|
+
- Part of ace-git consolidation (ace-git-diff merged into ace-git)
|
|
289
|
+
|
|
290
|
+
## [0.12.3] - 2025-12-06
|
|
291
|
+
|
|
292
|
+
### Technical
|
|
293
|
+
- Updated ace-llm dependency from `~> 0.12.0` to `~> 0.13.0` for OpenRouter provider support
|
|
294
|
+
|
|
295
|
+
## [0.12.2] - 2025-11-17
|
|
296
|
+
|
|
297
|
+
### Technical
|
|
298
|
+
- Updated ace-llm dependency from `~> 0.10.0` to `~> 0.11.0` for graceful provider fallback support
|
|
299
|
+
|
|
300
|
+
## [0.12.1] - 2025-11-16
|
|
301
|
+
|
|
302
|
+
### Changed
|
|
303
|
+
|
|
304
|
+
- **Dependency Update**: Updated ace-support-core dependency from `~> 0.9` to `~> 0.11`
|
|
305
|
+
- Provides access to latest PromptCacheManager features and infrastructure improvements
|
|
306
|
+
- Maintains compatibility with standardized ACE ecosystem patterns
|
|
307
|
+
|
|
308
|
+
## [0.12.0] - 2025-11-15
|
|
309
|
+
|
|
310
|
+
### Added
|
|
311
|
+
- **Path restriction for targeted commits**: Support for committing only files within specified directories or paths
|
|
312
|
+
- **Glob pattern support**: Full glob pattern support (`**/*.rb`, `lib/**/*.test.js`) for flexible file selection
|
|
313
|
+
- **Repository boundary validation**: `within_repository?` method validates paths are within git repository boundaries
|
|
314
|
+
- **Early path validation**: Validates path existence before git operations with clear error messages
|
|
315
|
+
- **Comprehensive CLI documentation**: Updated help text with detailed path and pattern usage examples
|
|
316
|
+
|
|
317
|
+
### Changed
|
|
318
|
+
- **PathResolver architecture**: Made `glob_pattern?` public and consolidated path detection logic
|
|
319
|
+
- **Staging strategy**: Intelligent routing between simple file staging and path-restricted staging based on input type
|
|
320
|
+
- **Error messaging**: Enhanced error messages for invalid paths and empty glob pattern results
|
|
321
|
+
|
|
322
|
+
### Technical
|
|
323
|
+
- **Integration test coverage**: Added 4 comprehensive integration tests for path validation and glob pattern handling
|
|
324
|
+
- **Unit test expansion**: Added 6 new unit tests for `glob_pattern?` and `within_repository?` methods
|
|
325
|
+
- **Code quality improvements**: Removed method duplication between PathResolver and CommitOrchestrator
|
|
326
|
+
|
|
327
|
+
## [0.11.2] - 2025-11-12
|
|
328
|
+
|
|
329
|
+
### Fixed
|
|
330
|
+
- **Silent staging failures**: Staging operations now properly detect and report failures instead of continuing silently
|
|
331
|
+
- **Misleading error messages**: Error messages now accurately reflect operation outcomes with clear indicators (✓/✗)
|
|
332
|
+
- **Debug-only output**: Staging progress messages are now visible by default (not just in debug mode)
|
|
333
|
+
- **Error visibility in quiet mode**: Critical errors always display, even in quiet mode, ensuring users are informed of failures
|
|
334
|
+
|
|
335
|
+
### Added
|
|
336
|
+
- **Verbosity control**: Added `--verbose` (default) and `--quiet` flags for output control
|
|
337
|
+
- **Error context**: Staging failures now include specific error details and actionable suggestions
|
|
338
|
+
- **StageResult model**: Infrastructure for tracking per-file staging outcomes
|
|
339
|
+
- **Transparent feedback**: Clear staging progress and error reporting with actionable suggestions (documented in README)
|
|
340
|
+
|
|
341
|
+
### Changed
|
|
342
|
+
- **FileStager**: Now returns boolean success/failure status and stores error details in `last_error`
|
|
343
|
+
- **CommitOrchestrator**: Enhanced with visible staging progress, proper error handling, and fail-fast behavior
|
|
344
|
+
- **CommitOptions**: Extended with `verbose` (default: true) and `quiet` (default: false) options
|
|
345
|
+
- **User feedback**: All staging operations now provide clear, immediate feedback on success or failure
|
|
346
|
+
|
|
347
|
+
## [0.11.1] - 2025-11-01
|
|
348
|
+
|
|
349
|
+
### Changed
|
|
350
|
+
|
|
351
|
+
- **Dependency Migration**: Updated to use renamed infrastructure gems
|
|
352
|
+
- Changed dependency from `ace-core` to `ace-support-core`
|
|
353
|
+
- Changed dependency from `ace-test-support` to `ace-support-test-helpers` (if applicable)
|
|
354
|
+
- Part of ecosystem-wide naming convention alignment for infrastructure gems
|
|
355
|
+
|
|
356
|
+
## [0.11.0]
|
|
357
|
+
- 2025-10-23
|
|
358
|
+
|
|
359
|
+
### Changed
|
|
360
|
+
- Integrated with ace-git-diff for unified git command execution
|
|
361
|
+
- GitExecutor now delegates to ace-git-diff's CommandExecutor for all git operations
|
|
362
|
+
- Added ace-git-diff (~> 0.1.0) as runtime dependency
|
|
363
|
+
- Maintains full backward compatibility for all public APIs
|
|
364
|
+
|
|
365
|
+
## [0.10.0] - 2025-10-14
|
|
366
|
+
|
|
367
|
+
### Added
|
|
368
|
+
- Standardize Rakefile test commands and add CI fallback
|
|
369
|
+
|
|
370
|
+
### Technical
|
|
371
|
+
- Add proper frontmatter with git dates to all managed documents
|
|
372
|
+
|
|
373
|
+
## [0.9.2] - 2025-10-08
|
|
374
|
+
|
|
375
|
+
### Changed
|
|
376
|
+
|
|
377
|
+
- **Test Structure Reorganization**: Reorganized tests for consistency
|
|
378
|
+
- Moved `test/ace/git_commit_test.rb` → `test/git_commit_test.rb`
|
|
379
|
+
- Aligns with standardized flat ATOM structure across all ACE packages
|
|
380
|
+
|
|
381
|
+
## [0.9.1] - 2025-10-07
|
|
382
|
+
|
|
383
|
+
### Changed
|
|
384
|
+
- **Test maintainability improvement**: Version tests now validate semantic versioning format instead of exact version values
|
|
385
|
+
- Prevents test failures on every version bump
|
|
386
|
+
- Uses regex pattern `/\A\d+\.\d+\.\d+/` to validate version format
|
|
387
|
+
|
|
388
|
+
## [0.9.0] - 2024-XX-XX
|
|
389
|
+
|
|
390
|
+
### Added
|
|
391
|
+
- Initial release with LLM-powered Git commit message generation
|
|
392
|
+
- Support for conventional commit format
|
|
393
|
+
- Automatic staging of all changes (monorepo-friendly)
|
|
394
|
+
- Gemini 2.0 Flash Lite (`glite`) as default model
|
|
395
|
+
- Flexible model selection with `--model` flag
|
|
396
|
+
- Intention-based message generation with `-i/--intention` flag
|
|
397
|
+
- Dry-run mode for previewing commit messages
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
## [0.18.3] - 2026-02-22
|
|
401
|
+
|
|
402
|
+
### Fixed
|
|
403
|
+
- Stripped duplicate command name prefix from commit examples
|
|
404
|
+
- Standardized quiet, verbose, debug option descriptions to canonical strings
|
data/COMPARISON.md
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Comparison: dev-tools git-commit vs ace-git-commit
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
This document compares the existing `git-commit` command in dev-tools with the new `ace-git-commit` gem implementation.
|
|
6
|
+
|
|
7
|
+
## Command Line API Comparison
|
|
8
|
+
|
|
9
|
+
### dev-tools git-commit
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
git-commit [options] [files...]
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Options:**
|
|
16
|
+
- `-d, --debug` - Enable debug output
|
|
17
|
+
- `-C, --repository REPO` - Specify explicit repository
|
|
18
|
+
- `-i, --intention INTENTION` - Intention context for commit message
|
|
19
|
+
- `-l, --local` - Use local LM Studio model
|
|
20
|
+
- `-n, --no-edit` - Skip editor, commit directly
|
|
21
|
+
- `-m, --message MESSAGE` - Use provided message (no LLM)
|
|
22
|
+
- `-a, --all` - Stage all changes before committing
|
|
23
|
+
- `--model MODEL` - Specify LLM model
|
|
24
|
+
- `--concurrent` - Execute commits concurrently
|
|
25
|
+
- `--main-only` - Process main repository only
|
|
26
|
+
- `--submodules-only` - Process submodules only
|
|
27
|
+
- `--repo-only` - Process only current repository
|
|
28
|
+
|
|
29
|
+
### ace-git-commit
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
ace-git-commit [options] [files...]
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Options:**
|
|
36
|
+
- `-i, --intention INTENTION` - Provide context for LLM generation ✅ (same)
|
|
37
|
+
- `-m, --message MESSAGE` - Use provided message (no LLM) ✅ (same)
|
|
38
|
+
- `--model MODEL` - Override default LLM model ✅ (same)
|
|
39
|
+
- `-s, --only-staged` - Commit only staged changes ⚡ (different from --all)
|
|
40
|
+
- `-n, --dry-run` - Show what would be committed ⚡ (different from --no-edit)
|
|
41
|
+
- `-d, --debug` - Enable debug output ✅ (same)
|
|
42
|
+
- `-f, --force` - Force operation (future use) ⚡ (new)
|
|
43
|
+
- `-h, --help` - Show help ✅ (standard)
|
|
44
|
+
- `-v, --version` - Show version ✅ (standard)
|
|
45
|
+
|
|
46
|
+
## Key Differences
|
|
47
|
+
|
|
48
|
+
### 1. Repository Scope
|
|
49
|
+
|
|
50
|
+
| Feature | dev-tools git-commit | ace-git-commit |
|
|
51
|
+
|---------|---------------------|----------------|
|
|
52
|
+
| Multi-repo support | ✅ Yes (submodules) | ❌ No |
|
|
53
|
+
| Concurrent execution | ✅ Yes | ❌ No |
|
|
54
|
+
| Repository selection | ✅ --repository, --main-only, etc. | ❌ Single repo only |
|
|
55
|
+
| Default scope | Current + submodules | Current repo only |
|
|
56
|
+
|
|
57
|
+
### 2. Staging Behavior
|
|
58
|
+
|
|
59
|
+
| Feature | dev-tools git-commit | ace-git-commit |
|
|
60
|
+
|---------|---------------------|----------------|
|
|
61
|
+
| Default behavior | Uses currently staged | **Stages ALL changes** |
|
|
62
|
+
| Stage all option | `--all` flag | Default (no flag needed) |
|
|
63
|
+
| Use only staged | Default behavior | `--only-staged` flag |
|
|
64
|
+
| Stage specific files | Pass as arguments | Pass as arguments |
|
|
65
|
+
|
|
66
|
+
### 3. LLM Integration
|
|
67
|
+
|
|
68
|
+
| Feature | dev-tools git-commit | ace-git-commit |
|
|
69
|
+
|---------|---------------------|----------------|
|
|
70
|
+
| LLM integration | Via subprocess (ace-llm-query) | **Direct Ruby (QueryInterface)** |
|
|
71
|
+
| Default model | google:gemini-2.0-flash-lite | glite (alias) |
|
|
72
|
+
| Local model support | `--local` flag | Via `--model lmstudio:*` |
|
|
73
|
+
| Model selection | `--model` flag | `--model` flag |
|
|
74
|
+
| System prompt location | Embedded in code | dev-handbook/templates/prompts/ |
|
|
75
|
+
|
|
76
|
+
### 4. Architecture
|
|
77
|
+
|
|
78
|
+
| Aspect | dev-tools git-commit | ace-git-commit |
|
|
79
|
+
|--------|---------------------|----------------|
|
|
80
|
+
| Pattern | Command pattern with orchestrator | **ATOM architecture** |
|
|
81
|
+
| Structure | CLI → Orchestrator → Multiple repos | CLI → Orchestrator → Single repo |
|
|
82
|
+
| Dependencies | Dry::CLI, complex orchestration | ace-core, ace-llm |
|
|
83
|
+
| Testing | Spec files with VCR | Minitest with mocks |
|
|
84
|
+
|
|
85
|
+
### 5. Additional Features
|
|
86
|
+
|
|
87
|
+
| Feature | dev-tools git-commit | ace-git-commit |
|
|
88
|
+
|---------|---------------------|----------------|
|
|
89
|
+
| Dry run | ❌ No | ✅ `--dry-run` |
|
|
90
|
+
| Editor support | ✅ `--no-edit` to skip | ❌ Always direct commit |
|
|
91
|
+
| Concurrent commits | ✅ `--concurrent` | ❌ Single repo only |
|
|
92
|
+
| Force flag | ❌ No | ✅ Future use |
|
|
93
|
+
|
|
94
|
+
## Migration Guide
|
|
95
|
+
|
|
96
|
+
### For Users
|
|
97
|
+
|
|
98
|
+
If you're migrating from dev-tools git-commit to ace-git-commit:
|
|
99
|
+
|
|
100
|
+
| Old Command | New Command |
|
|
101
|
+
|-------------|-------------|
|
|
102
|
+
| `git-commit` | `ace-git-commit` (stages all by default) |
|
|
103
|
+
| `git-commit --all` | `ace-git-commit` (default behavior) |
|
|
104
|
+
| `git-commit --intention "msg"` | `ace-git-commit -i "msg"` ✅ (same) |
|
|
105
|
+
| `git-commit --message "msg"` | `ace-git-commit -m "msg"` ✅ (same) |
|
|
106
|
+
| `git-commit --local` | `ace-git-commit --model lmstudio:model` |
|
|
107
|
+
| `git-commit --repo-only` | `ace-git-commit` (default, single repo) |
|
|
108
|
+
| `git-commit --concurrent` | ❌ Not supported (single repo only) |
|
|
109
|
+
| `git-commit file1 file2` | `ace-git-commit file1 file2` ✅ (same) |
|
|
110
|
+
|
|
111
|
+
### Key Behavioral Changes
|
|
112
|
+
|
|
113
|
+
1. **Default Staging**: ace-git-commit stages ALL changes by default
|
|
114
|
+
- Old: `git-commit --all` to stage everything
|
|
115
|
+
- New: `ace-git-commit` stages everything automatically
|
|
116
|
+
- New: `ace-git-commit --only-staged` to use current staging
|
|
117
|
+
|
|
118
|
+
2. **Repository Scope**: ace-git-commit is single-repo only
|
|
119
|
+
- Old: Processes submodules by default
|
|
120
|
+
- New: Only processes current repository
|
|
121
|
+
- Rationale: Simplified for true monorepo use
|
|
122
|
+
|
|
123
|
+
3. **LLM Integration**: Direct Ruby integration
|
|
124
|
+
- Old: Subprocess call to ace-llm-query
|
|
125
|
+
- New: Direct Ruby call via QueryInterface
|
|
126
|
+
- Benefit: Better performance, error handling
|
|
127
|
+
|
|
128
|
+
## Implementation Status
|
|
129
|
+
|
|
130
|
+
### ace-git-commit Completed Features ✅
|
|
131
|
+
|
|
132
|
+
- [x] Core ATOM architecture
|
|
133
|
+
- [x] GitExecutor atom for git commands
|
|
134
|
+
- [x] DiffAnalyzer molecule for diff analysis
|
|
135
|
+
- [x] MessageGenerator with LLM integration
|
|
136
|
+
- [x] FileStager for staging logic
|
|
137
|
+
- [x] CommitOrchestrator for workflow
|
|
138
|
+
- [x] CommitOptions model
|
|
139
|
+
- [x] CLI with option parsing
|
|
140
|
+
- [x] Configuration support (YAML)
|
|
141
|
+
- [x] System prompt in dev-handbook
|
|
142
|
+
- [x] Comprehensive tests (22 passing)
|
|
143
|
+
- [x] README documentation
|
|
144
|
+
|
|
145
|
+
### Not Implemented (Out of Scope) ❌
|
|
146
|
+
|
|
147
|
+
- [ ] Multi-repository support
|
|
148
|
+
- [ ] Submodule handling
|
|
149
|
+
- [ ] Concurrent execution
|
|
150
|
+
- [ ] Editor integration (--no-edit)
|
|
151
|
+
- [ ] Complex repository filtering
|
|
152
|
+
|
|
153
|
+
## Recommendations
|
|
154
|
+
|
|
155
|
+
### Use ace-git-commit when:
|
|
156
|
+
- Working in a true monorepo (ace)
|
|
157
|
+
- Want automatic staging of all changes
|
|
158
|
+
- Need better LLM integration performance
|
|
159
|
+
- Prefer simpler, focused tooling
|
|
160
|
+
|
|
161
|
+
### Use dev-tools git-commit when:
|
|
162
|
+
- Need multi-repository support
|
|
163
|
+
- Working with submodules
|
|
164
|
+
- Need concurrent execution
|
|
165
|
+
- Require complex repository filtering
|
|
166
|
+
|
|
167
|
+
## Summary
|
|
168
|
+
|
|
169
|
+
`ace-git-commit` is a simplified, monorepo-focused reimplementation that:
|
|
170
|
+
- **Simplifies** the default workflow (auto-stages all changes)
|
|
171
|
+
- **Improves** LLM integration (direct Ruby calls)
|
|
172
|
+
- **Focuses** on single-repository use cases
|
|
173
|
+
- **Follows** ATOM architecture patterns
|
|
174
|
+
- **Reduces** complexity by removing multi-repo features
|
|
175
|
+
|
|
176
|
+
The trade-off is losing multi-repository and submodule support in favor of a cleaner, simpler implementation optimized for monorepo workflows.
|
data/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Michal Czyz
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|