Background operation and failures
Development reference · View source
Git discovery, reads, mutations, hooks, fetch, pull, and push run on a bounded background service, so editing and rendering continue while they queue or run.
Progress. A long mutation temporarily replaces the status row with the
action, its target, elapsed time, a cancellation hint, and a rotating
- \ | / bar at the right. Every background service using this surface gets
the same spinner.
Cancelling. :git-cancel stops the current operation. A cancelled
mutation is reported as uncertain and reconciled at once, because cancelling
is not rollback.
Network safety.
- Network operations have a two-minute deadline.
- Nothing can prompt: Git’s prompts are off,
sshruns in batch mode unless you setGIT_SSH_COMMAND, and no askpass helper falls back to the terminal. An authentication needing a password fails with a message instead of hanging behind an invisible prompt.
Environment safety.
- Repository- and object-selection variables such as
GIT_DIRandGIT_INDEX_FILE, and inherited one-shot Git configuration, are removed from every child. Starting Runyte from another Git command cannot retarget it. - File arguments are always literal: a name resembling Git pathspec syntax still names only that file.
Discovery failures.
- The status line shows the failure with a
:git-refreshhint, andretrying discoverywhile a retry runs. :git-refreshmakes one new discovery attempt in the background. Further invocations are unavailable, with a reason, until it finishes. Nothing retries automatically: launch failures, signal exits, permissions, and configuration errors all wait for you.- Each of discovery’s three local Git reads has a 30-second deadline and bounded output. A signal exit does not tell whether the child reached Git.
- Other Git commands stay unavailable. Their palette reasons and the
gitrow in:service-healthkeep the last diagnostic during a retry. - A new failure replaces the diagnostic. Success clears it and either refreshes the repository or reports that the project is not in a Git repository, which offers no retry.
- Failure notifications stay in the notification history.
- Persistent sessions keep the discovery state and notifications across detach and reattach; reattaching does not start another attempt.