Status & roadmap#
pw_ghish: GitHub CLI-like interface for Gerrit code reviews and CI checks
This document summarizes the current status of pw_ghish (./gh) and the
remaining work required before the tool can be used outside upstream Pigweed.
Warning
EXPERIMENTAL: pw_ghish is experimental for upstream Pigweed and
is not ready for other projects yet. While multi-project profile
hooks exist in the codebase, non-Pigweed Gerrit and CI workflows are not yet
supported.
Current status: what works today#
Capability |
Status |
Summary |
|---|---|---|
Code Review ( |
Experimental (Pigweed) |
Create, push, view, diff, edit, review, comment on, and merge Gerrit CLs. See Code review (gh pr). |
CI & Tryjobs ( |
Experimental (Pigweed) |
Watch tryjobs, inspect recipe step trees, fetch failure logs, and rerun builders. See CI & tryjobs (gh run). |
Issue Tracking ( |
Experimental (Pigweed) |
List, view, create, branch, edit, comment on, and close Buganizer issues. See Issues (gh issue). |
Authentication ( |
Experimental (Pigweed) |
Check Gerrit, LUCI, and Buganizer credentials in |
Hooks ( |
Experimental (Pigweed) |
Install and run coding agent |
Worktrees ( |
Very Experimental |
Pool warm Git/Bazel worktree slots and sync Antigravity (Jetski) IDE projects. See Worktrees (gh wt). |
Project Profiles |
Working (Code-defined) |
Go profiles for |
Declarative Config ( |
Planned |
Move project policies and Pigweed defaults out of Go code into repository config files. |
Alternative SCM ( |
Under Evaluation |
Evaluate interoperability with Jujutsu ( |
Roadmap: planned capabilities#
Multi-project policy decoupling#
While pw_ghish includes built-in project profiles (pigweed, fuchsia,
and generic), project policies and several Pigweed-specific defaults still
live in Go code.
Planned work to support external Gerrit and LUCI repositories:
Declarative project configuration: Support repository-level configuration files (e.g.
.ghish.tomlor Git configuration) defining project behavior without modifying Go code.Removing remaining Pigweed-isms: Extract hardcoded Pigweed defaults (such as bootstrapped CIPD binary paths, default GCP quota projects, and slot prefixes) into project configuration.
Configurable gating labels: Allow projects to declare custom Commit-Queue votes and gating labels (e.g.
Presubmit-Verified,Integration-Verified) alongside automatic auto-submit label detection.Dynamic Buildbucket & Buganizer mapping: Configure LUCI bucket names, builder classification rules, and default Buganizer component IDs per repository.
Project-specific URL templates: Support custom shortlink resolvers and web UI links for private or downstream Gerrit instances.
Alternative SCM evaluation (Jujutsu / jj)#
Evaluating support for alternative source control management systems, notably
Jujutsu (jj):
Anonymous branchless commits: Resolve active changes and issues in repositories using
jj’s change-based model where named Git branches are optional.Change-Id and trailer handling: Ensure
jj describeand automated commit rewrites preserve GerritChange-Id:andBug:trailers.Worktree interoperability: Evaluate how
./gh wtwarm Bazel slot pooling interacts withjj workspacecheckouts.
Dry-run and local presubmit options#
Universal dry-run mode: Expand
--dry-runacross mutating commands (pr create,pr push,pr edit,pr merge,issue create,issue edit) matchingrun rerun --dry-runandwt gc --dry-run.Local pre-push checks: Allow
pr pushandpr createto optionally run fast local formatting or lint checks before uploading patchsets.