jdx/mise · error
incoming setup has not been completely applied; run `mise bo
Error message
incoming setup has not been completely applied; run `mise bootstrap dotfiles pull` before publishing
What it means
This error is thrown during `mise bootstrap dotfiles publish` in the history-sync publish flow. After merging the upstream tree with local overlays, the publisher compares the composed merge result against the remote tree; if they differ, it means the local clone has not fully applied (pulled) the incoming setup, so publishing would drop or overwrite incoming changes. mise refuses to publish and tells you to pull first.
Source
Thrown at src/system/history/sync/publish.rs:78
.collect::<Vec<_>>()
.join(", ")
);
}
// Accepted choices were validated against saved, live, and remote
// versions. Carry their already-encrypted saved objects, not a new
// plaintext publication representation.
let overlays = conflicts
.into_iter()
.map(|path| {
Ok(crate::system::history::shadow::Overlay {
object: repo.object_at(local, &path)?,
path,
})
})
.collect::<Result<Vec<_>>>()?;
let merged = repo.compose(&merged, &overlays)?;
if merged != tree {
bail!(
"incoming setup has not been completely applied; run `mise bootstrap dotfiles pull` before publishing"
);
}
}
let Some(candidate) = heads.candidate(repo, &tree)? else {
return Ok(None);
};
super::files::audit_history(repo, &candidate.commit, &Default::default())?;
candidate.adopt(repo)?;
Ok(Some(candidate.commit))
}
pub(crate) fn push(
remote: &Remote<'_>,
branch: &str,
commit: &str,
upstream_commit: Option<&str>,
) -> Result<PushOutcome> {View on GitHub (pinned to afd2eddd3a)
Solutions
- Run `mise bootstrap dotfiles pull` to fully apply the incoming setup, then retry publish
- Inspect `git`-style differences reported by `mise bootstrap dotfiles status` and resolve any unapplied incoming files
- If the upstream branch is wrong, repoint it with `mise bootstrap dotfiles origin set <url> --branch <name>` before pulling/publishing
Example fix
// before $ mise bootstrap dotfiles publish error: incoming setup has not been completely applied // after $ mise bootstrap dotfiles pull $ mise bootstrap dotfiles publish
Defensive patterns
Strategy: validation
Validate before calling
mise bootstrap dotfiles status && mise bootstrap dotfiles pull && mise bootstrap dotfiles publish
Prevention
- Always `pull` before `publish` when other machines share the setup repository
- Check `mise bootstrap dotfiles status` for unapplied incoming changes before publishing
When it happens
Trigger: Running `mise bootstrap dotfiles publish` while the upstream setup branch contains commits or overlays that the local machine never applied via `mise bootstrap dotfiles pull`; the composed merge (`repo.compose(&merged, &overlays)`) does not equal the upstream tree `tree`.
Common situations: Two machines share a dotfiles repository; machine B pushed new dotfiles, and machine A tries to publish its local edits without pulling first. Also happens after manually resetting/removing local tracked files so the merge no longer reproduces the upstream tree.
Understand the failure class
Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.
Related errors
- no setup repository is connected; `mise bootstrap dotfiles o
- the setup branch `{}` is not at {} any more (renamed, or del
- {} is an existing repository without the mise marker; `mise
- comparing checkpoints requires git
- listing snapshot files requires git
AI-assisted analysis of jdx/mise@afd2eddd3a (2026-09-09).
Data as JSON: /api/errors/55bf4273b3c01f3c.
Report an issue: GitHub.