{"record":{"id":"24f43bc02731f8ad","repo":"jdx/mise","slug":"is-not-tracked-mise-bootstrap-dotfiles-paths","errorCode":null,"errorMessage":"{} is not tracked; `mise bootstrap dotfiles paths` lists what is","messagePattern":"(.+?) is not tracked; `mise bootstrap dotfiles paths` lists what is","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/history/replay.rs","lineNumber":134,"sourceCode":"            \"name the paths to roll back, or `--to <ref> --all` for everything the checkpoint covers\"\n        );\n    }\n    if req.to.is_none() && req.all {\n        bail!(\"`--all` needs `--to <ref>`\");\n    }\n    let (store, tracked, entries) = crate::cli::dotfiles::history::open().await?;\n    let repo = store\n        .repo()\n        .ok_or_else(|| eyre::eyre!(\"rolling back requires git\"))?;\n    let live = live_tree(repo, &tracked)?;\n    let paths: Vec<PathBuf> = req\n        .paths\n        .iter()\n        .map(|path| normalize_target(path))\n        .collect();\n    for path in &paths {\n        if tracked.entry_for(path).is_none() {\n            bail!(\n                \"{} is not tracked; `mise bootstrap dotfiles paths` lists what is\",\n                display_path(path)\n            );\n        }\n    }\n    let targets = match &req.to {\n        Some(reference) => {\n            let entry = crate::cli::dotfiles::history::resolve(\n                reference,\n                &entries,\n                (paths.len() == 1)\n                    .then(|| display_path(&paths[0]))\n                    .as_deref(),\n            )?;\n            refuse_unusable(&entry)?;\n            let paths = if req.all {\n                covered_paths(&entry.checkpoint)\n            } else {","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/jdx/mise/blob/afd2eddd3a50c16190efc1c7e94404b48f72af57/src/system/history/replay.rs#L116-L152","documentation":"rollback can only restore paths that the dotfiles history store tracks. Before computing the restore plan, every normalized requested path is checked against the tracked entries; an untracked path would have no git history to restore from, so mise bails and points at `mise bootstrap dotfiles paths` to list what is tracked.","triggerScenarios":"Calling rollback with a path that was never added to dotfiles tracking (entry_for(path) is None after normalize_target), e.g. typos, non-normalized paths, or files managed outside mise.","commonSituations":"Typos in a path; file was removed from tracking earlier; user assumes any file in a tracked directory is tracked; dotfiles store was recreated with a different path set.","solutions":["Run `mise bootstrap dotfiles paths` to list tracked paths and correct the argument","Track the file first (`mise bootstrap dotfiles add <path>` or equivalent) before rolling it back","Check for typos or path normalization differences (e.g. ~ vs absolute path)"],"exampleFix":"// before\nmise bootstrap dotfiles rollback ~/nonexistent-zshrc\n// after\nmise bootstrap dotfiles paths            # confirm tracked paths\nmise bootstrap dotfiles rollback ~/.zshrc","handlingStrategy":"validation","validationCode":"const tracked = await dotfilesPaths();\nfor (const p of req.paths) {\n  if (!tracked.includes(normalizeTarget(p))) {\n    throw new Error(`${p} is not tracked`);\n  }\n}","typeGuard":"const isTracked = (path: string, tracked: string[]) =>\n  tracked.includes(normalizeTarget(path));","tryCatchPattern":"try {\n  await rollback(req);\n} catch (e) {\n  const m = String(e).match(/^(\\S+) is not tracked/);\n  if (m) {\n    console.error(`Run 'mise bootstrap dotfiles paths'; '${m[1]}' is not managed.`);\n  } else throw e;\n}","preventionTips":["List tracked paths (`dotfiles paths`) before scripting rollbacks","Normalize paths (~ expansion, absolute) exactly as mise does","Track new files before attempting to restore them"],"tags":["dotfiles","not-tracked","path"],"backgroundTag":"resource-not-found","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"}