{"record":{"id":"4064571c901049a5","repo":"jdx/mise","slug":"no-setup-repository-is-connected-mise-bootstrap","errorCode":null,"errorMessage":"no setup repository is connected; `mise bootstrap dotfiles origin set <url>` connects one","messagePattern":"no setup repository is connected; `mise bootstrap dotfiles origin set <url>` connects one","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/history/sync/run.rs","lineNumber":224,"sourceCode":"            dry_run: false,\n        }\n    }\n}\n\n/// The connected origin, or why there is none.\npub(crate) fn origin() -> Result<OriginTomlConfig> {\n    if let Some((_, origin)) = crate::system::history::config::origin()? {\n        return Ok(origin);\n    }\n    // recorded when it was connected: a fresh machine's declaration may\n    // still be on its way in the configuration being pulled\n    let status = read_status(&crate::dirs::STATE)?;\n    if let (Some(url), Some(branch), false) =\n        (status.origin_url, status.origin_branch, status.disconnected)\n    {\n        return Ok(OriginTomlConfig::plain(url, branch));\n    }\n    bail!(\n        \"no setup repository is connected; `mise bootstrap dotfiles origin set <url>` connects one\"\n    )\n}\n\n/// Runs one synchronization.\npub(crate) fn sync(\n    store: &Store,\n    tracked: &TrackedSet,\n    request: &SyncRequest,\n) -> Result<SyncOutcome> {\n    let _sync_lock = lock(store)?;\n    let origin = match &request.origin {\n        Some(origin) => origin.clone(),\n        None => origin()?,\n    };\n    let repo = store\n        .repo()\n        .ok_or_else(|| eyre::eyre!(\"synchronizing requires git\"))?;","sourceCodeStart":206,"sourceCodeEnd":242,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/history/sync/run.rs#L206-L242","documentation":"Thrown by the origin-resolution step (`origin`) of the dotfiles sync run. The persisted sync status has no origin URL (or the connection is explicitly marked disconnected), so no setup repository can be fetched from or pushed to. mise requires a connected origin before any sync can run.","triggerScenarios":"Running `mise bootstrap dotfiles sync`/`pull`/`publish` when `read_status(STATE)` yields no `origin_url`, no `origin_branch`, or `disconnected == true`, and no origin was supplied on the command line.","commonSituations":"Fresh machine where the dotfiles repository was never connected; user previously ran `mise bootstrap dotfiles origin disconnect` and forgot to reconnect; state directory wiped (reinstall, new HOME) losing the saved origin.","solutions":["Connect a repository: `mise bootstrap dotfiles origin set <url>`","If it was intentionally disconnected, reconnect with `mise bootstrap dotfiles origin set <url> --branch <branch>`","Verify the saved status with `mise bootstrap dotfiles status`"],"exampleFix":"// before\n$ mise bootstrap dotfiles sync\nerror: no setup repository is connected\n\n// after\n$ mise bootstrap dotfiles origin set git@github.com:me/dotfiles.git\n$ mise bootstrap dotfiles sync","handlingStrategy":"validation","validationCode":"mise bootstrap dotfiles status || mise bootstrap dotfiles origin set git@github.com:me/dotfiles.git","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Connect the origin immediately after installing mise on a new machine","Remember that `origin disconnect` blocks all sync commands until you re-run `origin set`"],"tags":["git","sync","dotfiles","configuration"],"backgroundTag":"missing-required-config","analyzedSha":"afd2eddd3a50c16190efc1c7e94404b48f72af57","analyzedAt":"2026-09-09T01:38:25.179Z","contentChangedAt":"2026-09-09T01:38:25.179Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}