feat(gt): add Graphite CLI support#290
Conversation
f138ada to
618c4c5
Compare
618c4c5 to
b9a16b9
Compare
|
Hi @charlesvien, technically this is the strongest of the CLI integration PRs. The
A CHANGELOG.md entry for the feature is also missing. And while it's low-risk in practice since none of these filters can panic, the project pattern expects a fallback to raw output if a filter fails. Worth adding for consistency. |
|
LGTM — clean architecture with shared runner, smart git-passthrough routing for free token savings, 26 tests all passing. Nice touch translating Ready to merge once CI passes. |
Incorporates 52 upstream commits (v0.27.0 → v0.28.2): - TOML filter DSL engine + 30 built-in filters (PRs rtk-ai#349, rtk-ai#351, rtk-ai#386) - Graphite CLI support (PR rtk-ai#290) - git commit -am/--amend fix via trailing_var_arg (PR rtk-ai#327) - restore_double_dash for cargo (PR rtk-ai#326) - gh -R/--repo passthrough, pr edit/comment fix (PRs rtk-ai#328, rtk-ai#332) - docker compose subcommand filtering (PR rtk-ai#336) - Telemetry tokens_saved + install_method (PRs rtk-ai#462, rtk-ai#469, rtk-ai#471) - proxy streaming (PR rtk-ai#268) - Diff limits increased (100→500 lines, 10→30 hunk lines) Conflict resolution (5 files): - cargo_cmd.rs: adopted upstream restore_double_dash, adapted streaming run_test() to use it, converted old split_at_double_dash tests - git.rs: adopted upstream simplified Commit unit variant (fixes -am), adapted all commit tests to flat args API, added 6 new edge case tests - init.rs: added TOML template generation alongside hook manifest - main.rs: merged both upstream (gt, toml_filter, verify) and hooks-v2 (cmd, hook, stream, pipe) modules, kept all tests from both sides - utils.rs: kept hooks-v2 command_in_path/which_command + upstream English docs Hook engine additions during merge: - Added gt to hook_lookup() whitelist with 4 routing test cases All 5 hook bug fixes from issue rtk-ai#361 preserved: 1. Streaming (stream.rs BufReader) 2. Handler coordination (parallel-merge + run_manifest_handlers on both paths) 3. Stderr deny (exit 2) 4. Routing whitelist (hook_lookup) 5. Vitest run injection 1182 tests pass (1 environment-dependent upstream test excluded).
Incorporates 52 upstream commits (v0.27.0 → v0.28.2): - TOML filter DSL engine + 30 built-in filters (PRs rtk-ai#349, rtk-ai#351, rtk-ai#386) - Graphite CLI support (PR rtk-ai#290) - git commit -am/--amend fix via trailing_var_arg (PR rtk-ai#327) - restore_double_dash for cargo (PR rtk-ai#326) - gh -R/--repo passthrough, pr edit/comment fix (PRs rtk-ai#328, rtk-ai#332) - docker compose subcommand filtering (PR rtk-ai#336) - Telemetry tokens_saved + install_method (PRs rtk-ai#462, rtk-ai#469, rtk-ai#471) - proxy streaming (PR rtk-ai#268) - Diff limits increased (100→500 lines, 10→30 hunk lines) Conflict resolution (5 files): - cargo_cmd.rs: adopted upstream restore_double_dash - git.rs: adopted upstream simplified Commit variant (fixes -am), fixed test_git_status_not_a_repo via GIT_DIR env override - init.rs: added TOML template generation alongside hook manifest, made resolve_claude_dir pub(crate) for config/mod.rs - main.rs: merged upstream (gt, toml_filter, verify) and multi-platform (cmd, hook, stream, safety, gemini) modules - utils.rs: accepted English doc comments Recovery edits (safety integration restored after incorrect overwrite): - hook/mod.rs: restored config::rules::try_remap(), safety::check_raw(), safety::check() per-command, FORMAT_PRESERVING/TRANSPARENT_SINKS pub(crate), basename extraction, safety-dependent tests - discover/registry.rs: updated 3 wc tests for upstream IGNORED_PREFIXES All hook engine + safety + gemini features preserved. 1332 tests pass, 0 failures, 5 ignored.
Many developers including myself use gt as their primary git interface. Since gt passes unknown subcommands to git,
gt status=git status,gt diff=git diff, etc. Without RTK support, all git output is unfiltered.Happy to take feedback or make changes!
Summary
How did I test this?