# Comparison table

|                                        | [chezmoi][chezmoi] | [dotbot][dotbot]  | [rcm][rcm]        | [vcsh][vcsh]             | [yadm][yadm]                 | [bare git][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][utils].

[chezmoi]: https://chezmoi.io/
[dotbot]: https://github.com/anishathalye/dotbot
[rcm]: https://github.com/thoughtbot/rcm
[vcsh]: https://github.com/RichiH/vcsh
[yadm]: https://yadm.io/
[bare git]: https://www.atlassian.com/git/tutorials/dotfiles "bare git"
[utils]: https://dotfiles.github.io/utilities/
