pub fn commit(plan: Plan, target: &Target) -> Result<Vec<Step>>Expand description
Carries out plan in target, returning its steps.
Everything is decided before anything is written; then files, blobs and .devset/ metadata
are replaced atomically, with state.toml last, so an interruption leaves a target that the
next run repairs. A held plan writes only its conflicts, and the lock it waits to apply.
A commit that leaves conflicts first saves what it is about to change, and keeps every base,
so the unfinished run can be taken back with Rollback.
ยงErrors
TargetError::BusyorTargetError::Concurrent, another devset is at work; nothing is written.Error::Io, a write fails; the next run repairs what it left.