Skip to content

checkout: detect remote stack from current branch - #475

Merged
skarim merged 2 commits into
skarim/checkout-tui-heightfrom
skarim/checkout-from-current-local-branch
Aug 27, 2026
Merged

checkout: detect remote stack from current branch#475
skarim merged 2 commits into
skarim/checkout-tui-heightfrom
skarim/checkout-from-current-local-branch

Conversation

@skarim

@skarim skarim commented Aug 25, 2026

Copy link
Copy Markdown
Collaborator

When gh stack checkout runs without a target, it now checks whether the current branch is not part of a local stack but belongs to an active stack on GitHub. If found, it offers to check out that stack locally.

The lookup remains best-effort: network failures, no or multiple matches, and declined confirmation fall through to the existing picker. Fully merged stacks are ignored, Ctrl+C still aborts, and non-interactive behavior is unchanged.


Stack created with GitHub Stacks CLIGive Feedback 💬

Copilot AI balanced review requested due to automatic review settings August 25, 2026 01:36

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds best-effort remote stack detection to interactive checkout.

Changes:

  • Detects a unique remote stack containing the current branch.
  • Adds paginated stack retrieval and tests.
  • Updates checkout documentation.
Show a summary per file
File Description
README.md Documents auto-detection.
cmd/checkout.go Implements detection and confirmation.
cmd/checkout_picker_test.go Tests detection behavior.
internal/github/github.go Paginates stack listing.
internal/github/github_test.go Tests pagination.
docs/src/content/docs/reference/cli.md Updates CLI reference.

Review details

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 6/6 changed files
  • Comments generated: 3
  • Review effort level: Balanced

Comment thread cmd/checkout.go
Comment thread cmd/checkout.go
Comment thread cmd/checkout.go
@skarim skarim self-assigned this Aug 25, 2026

@ktravers ktravers left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left one question just for my own understanding, otherwise looks good 🚀

Comment thread cmd/checkout.go
// matchingRemoteStacksForBranch returns picker-eligible remote stacks that
// contain branch exactly once per stack. Empty and fully merged stacks are not
// actionable and are omitted, matching the picker.
func matchingRemoteStacksForBranch(remote []github.RemoteStack, branch string) []*github.RemoteStack {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A branch can only belong to one stack, right? 🤔 Or does this cover the default branch as well, which is the one branch that can match many stacks?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Technically the limitation is only at a PR-level to only have a PR in one stack. It is possible to reuse a branch name, which is how you'd end up with multiple stacks matching for a branch. This can happen if a PR was closed and then opened for the same head branch, or if you open a new PR with a different base-head combo.

@skarim
skarim merged commit 1d9a20b into main Aug 27, 2026
7 checks passed
@skarim
skarim deleted the skarim/checkout-from-current-local-branch branch August 27, 2026 14:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support gh stack checkout (no args) to auto-detect and checkout the stack for the current branch

3 participants