Skip to content

docs(dotfiles): explain when to use sync, pull, and apply - #14343

Merged
jdx merged 2 commits into
mainfrom
claude/mise-github-issues-b2bfb7
Oct 12, 2026
Merged

jdx merged 2 commits into
mainfrom
claude/mise-github-issues-b2bfb7

Conversation

@jdx

@jdx jdx commented Oct 12, 2026 •

Copy link
Copy Markdown
Owner

https://entire.io/gh/jdx/mise/trails/667

mise dot sync, mise dot pull, and mise dot apply each write different things, and the docs and help did not say so. Users could not tell which command changes which files, or when they need more than one.

The sync guide now has a "Pull and apply" section with two comparison tables (commands, and entry modes) and a worked tracked-template example:

mise dot sync    # fetch the change
mise dot pull    # update ~/.bashrc and ~/.dotfiles/gitconfig.tera
mise dot apply   # render the template into ~/.gitconfig

It also says that the watcher fetches and pulls in sync mode but never copies or renders, so mise dot apply is still needed after incoming sources change.

Help text changes:

  • pull summary: "Write fetched changes from other machines to tracked files". It no longer says "Apply" or "from the origin", which suggested a network step.
  • apply summary: "Link, copy, and render [dotfiles] entries into place".
  • pull long help says that it updates the source of a copy or template entry but never writes the target.
  • apply long help says that it never fetches or pulls, and gives the sync, pull, apply order.

No behavior changes. A combined apply --pull is not part of this PR.

Refs #14321, #14273

Validation: docs formatted with prettier. The generated copies (mise.usage.kdl, docs/cli/dotfiles/{apply,pull}.md, docs/public/llms.txt, man/man1/mise.1) were edited by hand to match the source help rather than regenerated.

πŸ€– Generated with Claude Code

AI-assisted β€” Tool: Claude Code; model: anthropic/claude-sonnet-5-5; version: 2.1.295.


Note

Low Risk
Documentation and CLI help text only; no changes to dotfiles sync, pull, or apply behavior.

Overview
Clarifies how mise dot sync, pull, and apply divide work so users know which command touches which files and when more than one step is required.

The sync guide adds a Pull and apply section with comparison tables (what each command reads/writes, and how track vs copy/template entries behave) plus a worked example (sync β†’ pull β†’ apply after a remote template source change). It also notes that automatic sync mode pulls but does not copy or render, so mise dot apply is still needed when incoming sources change.

CLI help and generated docs are reworded: pull is described as writing fetched changes to tracked files (not β€œapply from the origin”), and apply as linking, copying, and rendering [dotfiles] locally without fetch/pull. Matching updates land in mise.usage.kdl, CLI markdown, man pages, and llms.txt. No runtime behavior changes.

Reviewed by Cursor Bugbot for commit bade1ca. Bugbot is set up for automated code reviews on this repo. Configure here.

Add a command and entry-mode comparison to the sync guide, a tracked-template
example, and clearer summaries and long help for pull and apply.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4S1V9KTNGWHAAB4GTRFDK74
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 6 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 10 included reviews currently available.

Learn how review limits work.

Review configuration:

βš™οΈ Run configuration
  • Configuration used: Repository YAML (base), Central YAML (inherited), Organization UI (inherited)
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2b69e733-b8b5-46aa-923a-7f5d08adc0bd

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 623b640 and bade1ca.


πŸ“’ Files selected for processing (8)
  • docs/cli/dotfiles/apply.md
  • docs/cli/dotfiles/pull.md
  • docs/dotfiles/sync.md
  • docs/public/llms.txt
  • man/man1/mise.1
  • mise.usage.kdl
  • src/cli/dotfiles/apply.rs
  • src/cli/dotfiles/pull.rs

  • Autofix Β· Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❀️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerConfidence Score: 5/5

[Low impact] This documentation-only PR appears safe to merge.

Summary

Clarifies what mise dot sync, mise dot pull, and mise dot apply read and write.

  • The sync guide shows how fetched changes reach tracked files and targets.
  • The pull and apply help spells out which files each command writes.

Reviews (2) Β· Last reviewed commit: "docs(dotfiles): note that pull restores ..." Β· Reviewed by Greptile

Comment thread src/cli/dotfiles/pull.rs Resolved
Comment thread docs/dotfiles/sync.md Resolved
…es more than deploy

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Entire-Checkpoint: 01M4S267EQMHYYAXQAZCN0V9KX
@jdx
jdx merged commit 0dbff52 into main Oct 12, 2026
52 checks passed
@jdx
jdx deleted the claude/mise-github-issues-b2bfb7 branch October 12, 2026 23:08
@github-actions

Copy link
Copy Markdown
Contributor

Instruction counts

Nothing was compared, and so nothing was gated. No series appears on both sides: either the base has no measurements recorded, or the two were measured on different runner classes, which are deliberately not comparable β€” counts shift between machine types by more than a real regression does.

New, nothing to compare against: env on jdx-perf-v1-ubuntu24.04-x64-mise-rust1.97.1-img5263c143, hook-env on jdx-perf-v1-ubuntu24.04-x64-mise-rust1.97.1-img5263c143, ls on jdx-perf-v1-ubuntu24.04-x64-mise-rust1.97.1-img5263c143, registry on jdx-perf-v1-ubuntu24.04-x64-mise-rust1.97.1-img5263c143, startup on jdx-perf-v1-ubuntu24.04-x64-mise-rust1.97.1-img5263c143

Only instruction counts gate. Wall clock is shown for context β€” on identical hardware it moves 4-20% run to run.

Measured by tak β€” instruction-counted CLI benchmarks, stored in this repository's git notes.

bade1cad0277 vs 76c646679585 Β· measured on the runner, not pushed to the history.

jdx pushed a commit that referenced this pull request Oct 13, 2026
<!-- entire-trail-link-start -->
https://entire.io/gh/jdx/mise/trails/640
<!-- entire-trail-link-end -->

### πŸš€ Features

- **(bootstrap)** add apt repositories and PPAs with
[bootstrap.apt.sources] by @jdx in
[#14306](#14306)
- **(bootstrap)** embed apt source signing keys inline in .sources files
by @jdx in [#14348](#14348)
- **(bootstrap)** render templates in [bootstrap.repos] checkout paths
by @jdx in [#14359](#14359)
- **(bootstrap)** declare macOS login items by @jdx in
[#14354](#14354)
- **(bootstrap)** layer dnf packages with rpm-ostree on Fedora Atomic
hosts by @jdx in [#14357](#14357)
- **(bootstrap)** support run0 and doas for privilege elevation by @jdx
in [#14351](#14351)
- **(dotfiles)** show tracked entries that no variant selects in status
by @jdx in [#14266](#14266)
- **(dotfiles)** group mise dot status into sections by @jdx in
[#14361](#14361)
- **(github)** add oauth_copy_code to copy the device code to the
clipboard by @jdx in [#14269](#14269)
- **(github)** keep the native OAuth refresh token in a password manager
or keychain by @jdx in [#14360](#14360)
- **(http)** add libc() and avx2() template functions by @jdx in
[#14298](#14298)
- **(pypi)** read upload times from PEP 691 simple indexes by @jdx in
[#14352](#14352)
- **(rust)** download rustup-init from RUSTUP_UPDATE_ROOT by @jdx in
[#14356](#14356)

### πŸ› Bug Fixes

- **(aqua)** warn once for packages with no repo to list versions from
by @jdx in [#14336](#14336)
- **(backend)** keep decoded download file names inside the download
directory by @JamBalaya56562 in
[#14274](#14274)
- **(bootstrap)** support dnf package groups by @jdx in
[#14347](#14347)
- **(bootstrap)** don't print a stdin-only helper as a manual command by
@jdx in [#14350](#14350)
- **(bootstrap)** explain why dnf packages cannot install on ostree
hosts by @jdx in [#14353](#14353)
- **(brew)** install bottle etc files and run post_install_steps when
pouring by @jdx in [#14272](#14272)
- **(brew)** refuse to chown a prefix owned by another user by @jdx in
[#14345](#14345)
- **(brew)** preserve protected post-install copy destinations by @jdx
in [#14311](#14311)
- **(brew-cask)** support generate completions in evaluated casks by
@pmmmwh in [#14255](#14255)
- **(docker)** install libatomic1 in the Debian image so Node.js 26 runs
by @jdx in [#14303](#14303)
- **(dotfiles)** keep existing ciphertext when an encrypted file is
unchanged by @jdx in [#14300](#14300)
- **(dotfiles)** stop a newly selected profile from deleting its shared
file by @jdx in [#14275](#14275)
- **(dotfiles)** restore config entries when adopting under a symlinked
home by @jdx in [#14315](#14315)
- **(dotfiles)** show per-file diffs for directory copy entries in dot
diff by @jdx in [#14333](#14333)
- **(dotfiles)** apply mise's own config before planning the other
entries by @jdx in [#14339](#14339)
- **(go)** read an exact go line in go.mod as the toolchain version by
@jdx in [#14308](#14308)
- **(http)** retry artifact downloads started by mise exec and shims by
@jdx in [#14342](#14342)
- **(npm)** resolve unlocked latest to the npm version of a graph-locked
install by @jdx in [#14307](#14307)
- **(npm)** give unlocked requests their own install under the identity
layout by @jdx in [#14309](#14309)
- **(oci)** ignore host apt hooks when installing apt bootstrap packages
by @jdx in [#14296](#14296)
- **(packslip)** let a workflow list carry the signer pin across a
workflow move by @jdx in
[#14338](#14338)
- **(packslip)** keep a renamed project's lockfile signer under packslip
1.7 by @jdx in [#14362](#14362)
- **(prune)** keep a uv-locked pipx tool's installs for every Python by
@jdx in [#14335](#14335)
- **(prune)** keep versions of task-scoped tools by @jdx in
[#14334](#14334)
- **(schema)** accept [bootstrap.secrets] by @JamBalaya56562 in
[#14322](#14322)
- **(schema)** accept [bootstrap.groups] and [bootstrap.users] by
@JamBalaya56562 in [#14340](#14340)
- **(schema)** accept table forms for vars._.file and vars._.source by
@JamBalaya56562 in [#14383](#14383)
- **(shim)** keep other projects' command wrappers on reshim by @jdx in
[#14355](#14355)
- **(task)** bump gix so remote tasks work in git hooks by @any-victor
in [#14316](#14316)
- hide the Windows console for the tool-update service by @jdx in
[#14344](#14344)

### 🚜 Refactor

- replace serde_yaml with serde-saphyr by @jdx in
[#14328](#14328)

### πŸ“š Documentation

- **(bootstrap)** explain when to use --from versus --adopt by @jdx in
[#14301](#14301)
- **(bootstrap)** recommend fish = "auto" for fish shell activation by
@jdx in [#14304](#14304)
- **(dotfiles)** explain when to use sync, pull, and apply by @jdx in
[#14343](#14343)
- **(shims)** explain how to check whether a tool is installed by @jdx
in [#14337](#14337)
- switch body text to DM Sans and tighten the releases page by @jdx in
[#14302](#14302)
- self-host DM Sans and JetBrains Mono so they load on mise.jdx.dev by
@jdx in [#14310](#14310)

### πŸ§ͺ Testing

- **(bootstrap)** don't depend on bc being absent in the apt sources
test by @jdx in [#14371](#14371)

### πŸ“¦οΈ Dependency Updates

- install Homebrew uses_from_macos dependencies on Linux by @itskyf in
[#14288](#14288)
- bump packslip to 1.7.0 by @jdx in
[#14363](#14363)
- lock file maintenance by @renovate[bot] in
[#14320](#14320)
- update github actions by @renovate[bot] in
[#14380](#14380)
- update dependency python to v3.14.8 by @renovate[bot] in
[#14381](#14381)
- update rust crates by @renovate[bot] in
[#14382](#14382)
- update docker images by @renovate[bot] in
[#14379](#14379)

### πŸ“¦ Registry

- install opencode 2 from npm by @jdx in
[#14295](#14295)

### Chore

- **(ci)** switch to jactionlint v2 and drop zizmor by @jdx in
[#14256](#14256)
- fix CI for the aqua registry update and the unsafe-libyaml advisory by
@jdx in [#14326](#14326)

### Ci

- double the unit-macos job timeout by @jdx in
[#14346](#14346)

### Security

- **(config)** require trust for path: tool versions by @jdx in
[#14358](#14358)

### New Contributors

- @pmmmwh made their first contribution in
[#14255](#14255)
- @itskyf made their first contribution in
[#14288](#14288)

## πŸ“¦ Aqua Registry Updates

### New Packages (3)

- [`Alice39s/xmtr`](https://github.com/Alice39s/xmtr)
-
[`bufbuild/protoschema-plugins/protoc-gen-jsonschema`](https://github.com/bufbuild/protoschema-plugins)
- [`takumin/qemu-bin`](https://github.com/takumin/qemu-bin)

### Updated Packages (3)

- [`bootandy/dust`](https://github.com/bootandy/dust)
-
[`connectrpc/connect-go/protoc-gen-connect-go`](https://github.com/connectrpc/connect-go)
- [`sharkdp/hyperfine`](https://github.com/sharkdp/hyperfine)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant