Comparison table
| chezmoi | dotbot | rcm | vcsh | yadm | bare git | |
|---|---|---|---|---|---|---|
| Distribution | Single binary | Python package | Multiple files | Single script or package | Single script | - |
| Install method | Many | git submodule | Many | Many | Many | Manual |
| Non-root install on bare system | ✅ | ⁉️ | ✅ | ✅ | ✅ | ✅ |
| Windows support | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| Bootstrap requirements | None | Python, git | Bash | sh, git | git | git |
| Source repos | Single | Single | Multiple | Multiple | Single | Single |
| dotfiles are... | Files | Symlinks | Symlinks | Files | Files | Files |
| Config file | Optional | Required | Optional | None | Optional | Optional |
| Private files | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Show differences without applying | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Whole file encryption | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
| Password manager integration | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Machine-to-machine file differences | Templates | Alternative files | Alternative files | Branches | Alternative files, templates | ⁉️ |
| Custom variables in templates | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Executable files | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| File creation with initial contents | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ |
| Externals | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
| Manage partial files | ✅ | ❌ | ❌ | ⁉️ | ✅ | ⁉️ |
| File removal | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Directory creation | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Run scripts | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Run once scripts | ✅ | ❌ | ❌ | ✅ | ✅ | ❌ |
| Machine-to-machine symlink differences | ✅ | ❌ | ❌ | ⁉️ | ✅ | ⁉️ |
| Shell completion | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ |
| Archive import | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Archive export | ✅ | ❌ | ❌ | ✅ | ❌ | ✅ |
| Implementation language | Go | Python | Bash | POSIX Shell | Bash | C |
✅ Supported, ⁉️ Possible with significant manual effort, ❌ Not supported
For more comparisons, visit dotfiles.github.io/utilities.