feat: add machine-readable worktree creation for agents - #192
Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Enterprise Run ID: 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughThe PR adds ChangesPorcelain worktree creation
Estimated code review effort: 3 (Moderate) | ~20 minutes Mergeability Score: 🔵 Low · up to The documented agent workflow still shows a command form that conflicts with the required public interface, which could mislead users or automation; the PR is otherwise mergeable with explicit owner follow-up to correct the example. Sequence Diagram(s)sequenceDiagram
participant Agent
participant git_gtr_new
participant WorktreeCreation
participant Hooks
Agent->>git_gtr_new: run new --porcelain
git_gtr_new->>WorktreeCreation: create worktree noninteractively
WorktreeCreation->>Hooks: inspect and run post-create hooks
Hooks-->>WorktreeCreation: return hook status
WorktreeCreation-->>Agent: stable records on stdout
Hooks-->>Agent: progress and hook output on stderr
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In @.github/instructions/testing.instructions.md:
- Around line 26-28: Update the machine-readable creation command example to
invoke the documented git gtr interface instead of the repository-relative
./bin/gtr path, preserving all existing arguments and output behavior.
In `@README.md`:
- Around line 193-196: Update the --porcelain documentation to clarify that
path, branch, and hook_status records are emitted only when cmd_create completes
successfully; explicitly state that a failing post-create hook exits before
emitting any success records.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Enterprise
Run ID: c41681fa-44d7-4bdf-b8a2-86a656bc6cac
📒 Files selected for processing (13)
.github/instructions/testing.instructions.mdCHANGELOG.mdREADME.mdcompletions/_git-gtrcompletions/git-gtr.fishcompletions/gtr.bashdocs/agent-usage.mdlib/commands/create.shlib/commands/help.shlib/hooks.shscripts/generate-completions.shtests/cmd_create_integration.batstests/hooks.bats
* Detect and recover locked worktree entries with missing directories (coderabbitai#182) git worktree prune skips locked entries by design, so a locked worktree whose directory was deleted (e.g. a crashed agent session) lingers in the registry and keeps its branch checked out. clean now detects this, offers to unlock and prune (auto-confirmed by --force/--yes, previewed by --dry-run), and prints the manual recovery command when declined. * feat(clean): support closed PR cleanup (coderabbitai#183) * feat(clean): support closed PR cleanup Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> * fix(clean): address closed cleanup review nits Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> * fix(clean): match GitLab head_sha fallback Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> --------- Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> * Release v2.8.0 * Replace Homebrew bump action with direct formula update (coderabbitai#184) * Replace Homebrew bump action with direct formula update * Allow manual formula bump via workflow_dispatch * Return non-zero when git gtr rm fails (coderabbitai#190) * Fix rm exit status on removal failures * Test public rm failure status * chore: prepare v2.8.1 release * fix(copy): bound includeDirs discovery (coderabbitai#191) * fix(copy): bound includeDirs discovery * test(copy): allow filesystem result order * fix(copy): preserve basename fallback * chore: prepare v2.8.2 release * feat: inherit sparse-checkout in new worktrees (coderabbitai#186) * feat: inherit sparse-checkout in new worktrees When creating a new worktree from one with sparse-checkout enabled, the new worktree inherits the cone pattern automatically. Controlled by gtr.sparse.inherit config (default on) and --sparse/--no-sparse flags. Adds reusable helpers for sparse-checkout replication. * fix(sparse): address CodeRabbit review feedback on sparse-checkout inheritance - Preserve slash-separated branch paths in _worktree_path_for_ref - Allow fallback to top-level worktree when matching worktree is not sparse - Add Git 2.25+ guard for sparse-checkout support with full checkout fallback - Fix non-cone mode to use init --no-cone (git defaults to cone mode) - Improve error handling: failed sparse inheritance now falls back to full checkout and hard-errors if that fails, instead of leaving --no-checkout worktree empty - Add tests for slash refs, non-cone inheritance, and sparse config precedence * fix: harden sparse-checkout inheritance * fix: support pre-2.20 config lookup * fix: align sparse sources with git refs --------- Co-authored-by: Tom Elizaga <tom.elizaga@gmail.com> * Add PR worktree checkout command (coderabbitai#187) * feat: add pull request worktree command Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> * fix: make pr worktrees gh-aware Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> * fix: harden pr worktree checkout Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> * fix: address pr review feedback Assisted-by: pi:gpt-5.5 Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> --------- Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Co-authored-by: Tom Elizaga <tom.elizaga@gmail.com> * Run CI on fork pull requests (coderabbitai#185) * Run CI on fork pull requests * fix(ci): minimize fork pull request permissions * chore: prepare v2.9.0 release * feat: add machine-readable worktree creation for agents (coderabbitai#192) Adds stable porcelain output and hook disposition reporting for shell-native agent integrations, with tests and documentation. * chore: prepare v2.10.0 release * perf: avoid per-worktree path resolution in list * fix: complete v2.10 integration artifacts --------- Co-authored-by: Tom Elizaga <tom.elizaga@gmail.com> Co-authored-by: scarf <greenscarf005@gmail.com> Co-authored-by: chatgpt-codex-connector[bot] <199175422+chatgpt-codex-connector[bot]@users.noreply.github.com> Co-authored-by: Adam Wettreich <80975389+adamwett@users.noreply.github.com>
Summary
git gtr new --porcelainwith stablepath,branch, andhook_statusrecordsWhy
This addresses the integration need raised in #67 without adding a long-running protocol server to the Bash CLI. Shell-capable agents can call
git gtrdirectly and reliably parse the created worktree path.Validation
shellcheck bin/gtr bin/git-gtr lib/*.sh lib/commands/*.sh adapters/editor/*.sh adapters/ai/*.sh./scripts/generate-completions.sh --checkbats tests/hooks.bats— 36/36 passedbats tests/cmd_create_integration.bats— 18/18 passedbats tests/— 552/553 passed; the remainingcmd_clean --merged uses nested registered worktree pathfailure reproduces unchanged on exactorigin/maingit gtrdisposable-repository smoke test verified strict stdout records, noisy-hook stderr isolation, returned path, and cleanupSummary by CodeRabbit
New Features
--porcelainoutput forgit gtr new, providing stable machine-readable worktree, branch, and hook-status records.Documentation
Chores
Tests