{"record":{"id":"77fdd60a0f5916aa","repo":"jdx/mise","slug":"partial-pulls-are-not-supported-apply-the-complet","errorCode":null,"errorMessage":"partial pulls are not supported: apply the complete setup without PATH arguments","messagePattern":"partial pulls are not supported: apply the complete setup without PATH arguments","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"src/system/history/sync/apply.rs","lineNumber":121,"sourceCode":"}\n\n/// Applies a prepared synchronization while the caller holds the sync lock.\npub(crate) async fn apply_locked(\n    store: &Store,\n    tracked: &TrackedSet,\n    req: &ApplyRequest,\n) -> Result<ApplyOutcome> {\n    apply_locked_with_scope(store, tracked, req, None).await\n}\n\npub(crate) async fn apply_locked_with_scope(\n    store: &Store,\n    tracked: &TrackedSet,\n    req: &ApplyRequest,\n    mut operation_scope: Option<OperationScope>,\n) -> Result<ApplyOutcome> {\n    if !req.paths.is_empty() {\n        bail!(\"partial pulls are not supported: apply the complete setup without PATH arguments\");\n    }\n    let repo = store\n        .repo()\n        .ok_or_else(|| eyre::eyre!(\"applying requires git\"))?;\n    let state_dir = store.state_dir();\n    let planned_head = repo.ref_oid(crate::system::history::shadow::HistoryRepo::HISTORY_REF)?;\n    let incoming = run::incoming_tracking(repo, tracked)?;\n    let tracked = &incoming;\n    // Metadata changes must advance the same complete Git tree after live\n    // application. They cannot be reduced to this machine's selected paths.\n    let mut inventory_tree = run::incoming_repository_tree(repo, tracked)?;\n    let mut status = run::read_status(state_dir)?;\n    if req.automatic && status.application_failure.is_some() {\n        return Ok(ApplyOutcome {\n            held: status.pending_applications.len().max(1),\n            ..Default::default()\n        });\n    }","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/jdx/mise/blob/533346cc374382b41ec5ff70536252b2e96e725c/src/system/history/sync/apply.rs#L103-L139","documentation":"The dotfile sync `apply` operation only supports applying the entire tracked setup: it replays a full snapshot from history onto the working tree. If the caller supplies PATH arguments (a partial apply), mise rejects the request up front because incremental application is not implemented. The full setup must be applied with no path filters.","triggerScenarios":"Running the dotfile pull/apply command with path arguments, e.g. `mise dotfiles pull ~/.bashrc`, which reaches `apply_locked` with a non-empty `req.paths`.","commonSituations":"Users expecting git-pull-like selective restores of a single dotfile; shell scripts forwarding user-supplied paths into the apply command.","solutions":["Run the apply/pull command without PATH arguments to apply the complete setup.","If you only want one file, apply fully and then revert the other files, or use the history show/checkout tooling if it supports single-file views.","Update any wrapper scripts to stop passing paths to apply.","Request or watch for partial-apply support upstream if this is a frequent need."],"exampleFix":"// before\nmise dotfiles pull ~/.zshrc\nError: partial pulls are not supported...\n\n// after\nmise dotfiles pull","handlingStrategy":"validation","validationCode":"if !path_args.is_empty() {\n  eprintln!(\"apply does not accept PATH arguments; run it with none to apply the full setup\");\n}","typeGuard":"fn apply_request_is_full(req: &ApplyRequest) -> bool {\n  req.paths.is_empty()\n}","tryCatchPattern":"match result {\n  Err(e) if e.to_string().contains(\"partial pulls are not supported\") => {\n    // fall back to a full apply and selectively revert afterwards\n  }\n  other => other?,\n}","preventionTips":["Invoke dotfile pull/apply without path arguments.","Strip user-supplied paths in wrapper scripts before calling apply.","Use history show/checkout flows for per-file inspection instead."],"tags":["dotfiles","sync","unsupported-operation","cli"],"backgroundTag":"unsupported-operation","analyzedSha":"533346cc374382b41ec5ff70536252b2e96e725c","analyzedAt":"2026-09-17T13:35:38.149Z","contentChangedAt":"2026-09-17T13:35:38.149Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}