repo:push
Send committed local history to the hosted repository over the network (use --create-remote for the first publication).
Reference for flywheel repo:push.
Publish committed local graph history. Preview a push first: add --dry-run to the push command to print the commits, nodes, and artifacts it would upload, the total size, the target server, and who will see the result. A dry run sends nothing; it needs the same sign-in as a push and refuses the same paused rebase and staged work.
flywheel repo:push --repo ./my-repo --create-remote --dry-runA new hosted repository is visible only to the person who pushed until they share it, and every push states who can see the repository. For the first publication, run:
flywheel repo:push --repo ./my-repo --create-remote --name "My repository" --format=json--name is optional and only applies at first publication. It preserves your supplied text (up to 256 characters); labels may repeat and the repository UUID remains its identity. Omit the flag to leave it unnamed. Use hosted:repository:list to read labels. The server and its name migration must be available before a CLI release depends on this flag.
Membership and tag-scope refusals
An existing repository refuses a caller with no role or an insufficient role with 403 repository_forbidden (CLI exit 3); missing and retired repositories return 404 repository_not_found. To add your own node under a readable node without joining its repository, run flywheel hosted:node:create --parent <node_id> --title 'My addition'. Without a write role on the parent's repository, this places the node in your fork.
A pushed assignment to an unreadable or missing tag scope returns 409 repository_tag_scope_unreadable, naming tag_id, scope_node_id and scope_repository_id. Nothing is published and your local commits remain. Get read access, or run the exact flywheel repo:unpublished:drop --operation <operation_id> … --repo '<path>' command printed in next_action, then push again. It drops every unpublished assignment for that scope and replays the remaining work. A later tag-removal commit does not bypass the check. A readable scope's inactive definition still returns tag definition is not active.
Rerun a failed or interrupted push
If a hosted request fails during the push (the connection is refused or drops, the request times out, the answer can't be read, or HTTP 408, 429, 502, 503 or 504 is still the answer after the CLI's retries), the error keeps its code and adds two fields. step names the part of the push whose request failed: create_repository (creating the hosted repository for --create-remote; the service may have created it), hosted_head_check (reading the hosted head before attaching this checkout again), object_upload (preparing or uploading the artifact objects the push references), push_request (sending the push; the service may have accepted it) or push_receipt_check (reading the push the service already holds under this key). next_action is the same command with the same arguments under the --idempotency-key it ran with; when you ran it without one, it carries the key the CLI generated. Without --format=json, the error is printed as text, with that command on its own Next: line. Run it once the hosted service can be reached again, for example:
flywheel repo:push --repo ./my-repo --create-remote --name 'My repository' --format=json --idempotency-key 3f2b8c1e-7a4d-4e9b-8c6f-1d2e3a4b5c6dThe service recognizes a push it already accepted, and a hosted repository it already created, by that key, so the rerun does not make either twice. A hosted repository_busy answer gets a step and this next_action too, and keeps its code repository_busy. Other recognized hosted refusals keep their HTTP-kind code (http_error, auth_error, transport_error, timeout, response_error or policy_blocked) and refusal-specific next_action, with no step. For example, HTTP 409 repository_head_mismatch prints http_error; its hosted identifier is in server_response.body.detail (or its type field), not error.code. Keep the same local repository and authenticated account; do not reinitialize the repository or rerun under a new key.
Retain a key before a script starts
A process terminated before reporting an error cannot report its generated key. If a script must recover from abrupt termination, generate and retain a UUID outside the CLI process before the first invocation. Set PUBLISH_KEY to that retained UUID and use the existing option from the start:
flywheel repo:push --repo ./my-repo --create-remote --idempotency-key "$PUBLISH_KEY" --format=jsonReuse that UUID and unchanged inputs on every attempt until publication completes. The CLI does not recover an unknown generated key after abrupt termination; no additional Flywheel configuration or recovery file is required.
Command Group
Local Repository
Summary
Send committed local history to the hosted repository over the network (use --create-remote for the first publication).
Usage
flywheel repo:push [FLAGS]Required flags
None.
Optional flags
| Flag | Value | Default | Choices | Description |
|---|---|---|---|---|
--repo | string | Local repository filesystem path. | ||
--personal | Use the configured personal repository. | |||
--create-remote | Create the hosted repository before pushing. Required for the first publication of a local repository; omit it once the repository is attached. Safe to repeat with the same --idempotency-key. | |||
--name | string | Optional hosted repository label for first publication only. Requires --create-remote; non-whitespace text of at most 256 characters. Labels need not be unique. | ||
--dry-run | Show what this push would upload (commits, nodes, artifacts, total size), the hosted server it would reach, and who will see it, without sending anything to the hosted service. Needs the same sign-in and refuses the same paused rebase and staged work as a real push. | |||
--format | FORMAT | json, tsv, csv, table | Output format for command results. | |
--env | PROFILE | Use a configured CLI profile for this invocation. | ||
--out | PATH | Write output to a file path, or use - for stdout. | ||
--open | Open browser-bound URLs when supported. | |||
--no-retry | Disable transient-error retries. | |||
--retry-max | N | Maximum transient-error retry attempts. | ||
--wait | Block on async operations until a terminal state is reached. | |||
--wait-timeout | SECONDS | 600 | Seconds to wait for --wait before timing out. Defaults to 600. | |
--allow-self | Allow mutating the currently active credential. | |||
--timeout | SECONDS | Set the per-request timeout budget in seconds. | ||
--idempotency-key | KEY | Reuse an Idempotency-Key so ambiguous write failures can be retried with the same key. | ||
--force | Force safety-gated operations where supported. | |||
--yes | Skip confirmation prompts for destructive operations. | |||
--debug | Print structured request debugging with secrets masked. | |||
--verbose | Print verbose progress for long-running operations. | |||
-h, --help | Show this help. |
Examples
Preview a first publication before approving it; nothing is sent.
flywheel repo:push --repo <path> --create-remote --dry-runFirst publication: create the hosted repository and push.
flywheel repo:push --repo <path> --create-remote [--name <label>]Ordinary push after the first publication.
flywheel repo:push --repo <path>Rerun a push whose hosted request failed with the next_action its error gives, or an interrupted push with the key repo:status lists. If the server already accepted that push, the rerun records it: with unchanged local history the server replays the recorded outcome for that key, or nothing is sent if a repo:pull already brought that push in; after later commits or a repo:pull's rebase, the rerun publishes nothing new and reports already_accepted, and the commits still unpublished need a plain repo:push. Otherwise the rerun is an ordinary push. The already_accepted result names the accepted head, its receipt_sequence and unpublished_commit_count, the number of commits still unpublished.
flywheel repo:push --repo <path> --idempotency-key <uuid>