Skip to content

Workflows

The Quick Start owns the beginner create/clone path. Use Repository Member Lifecycle for member creation, publish-later setup, clone/add distinctions, detach/attach verification, and replacement. The recipes below start with an existing workspace.

Make A Multi-Repository Change

gwz status
gwz snapshot before-change
gwz forall -- cargo test
gwz add -A
gwz commit -m "Update shared API"
gwz status

If the change must be backed out to the snapshot:

gwz materialize --snapshot before-change

Work In An Isolated Lane

Copy the workspace as it sits — uncommitted work and build output included — into a named local clone beside it, work there, and merge the result back by name. For a workspace at ./demo the default destination is ../demo-A:

gwz local clone A
cd ../demo-A
gwz status
# ... edit, gwz add, gwz commit ...
cd ../demo
gwz --target @all merge --remote A
gwz local dispose A

A lane whose owner column reads claude-code:<session id> was made by Claude Code's worktree hook; see Claude Code.

The explicit @all selection brings across the lane's root and member commits together. To integrate several lanes, merge them serially into this root, then run one gwz push; see Local Clones. To keep the tree and only forget the lane:

gwz local dispose A --keep

See Local Clones for the family model, the deletion rules, and what this build does not serve yet.

Inspect Workspace History

Start with the compact workspace stream, then expand only the entries you need:

gwz log -n 20
gwz log --full --body -n 5

Compare a topic across the selected repositories or inspect only a path:

gwz log main..topic
gwz log +lock..HEAD -- services/api

For automation, select a machine framing before the command. JSON returns one gwz.log/v0 object; JSONL streams a schema header followed by entry and degradation records:

gwz --json log -n 20
gwz --jsonl log --since 2026-08-01T00:00:00Z

See gwz log for coalescing, filters, the default global limit, revision operands, and exit behavior.

Prepare A Release Tag

gwz status
gwz forall -- cargo test
gwz snapshot release-candidate
gwz tag v0.9.0 -m "GWZ v0.9.0"
gwz tag --push v0.9.0

Verify the tag checkout:

gwz materialize --tag v0.9.0
gwz status

Pull A Workspace Forward

Learn what moved upstream first. gwz fetch contacts every selected repository's remote and reports one line each, integrating nothing:

gwz fetch

See gwz fetch for the row kinds and the exit codes. Then preview the integration:

gwz --dry-run pull --head

Then update:

gwz pull --head
gwz status

If a remote host is slow or overloaded:

gwz --jobs 20 --max-per-host 4 --ssh-timeout 10 pull --head

Run Maintenance In Members

Run a direct command:

gwz forall -- git status --short

Run a shell command that uses GWZ environment variables:

gwz forall -c 'echo "$GWZ_MEMBER_PATH"; git rev-parse --short HEAD'

Continue through failures and report the failed members at the end:

gwz --partial forall -- cargo test

Script Member Paths

Human gwz ls output is one path per line:

gwz ls --local

For structured member metadata:

gwz --json ls

For stable status path output:

gwz status --porcelain