{"_id":"@dovaogedot/polio","_rev":"7-a8cd4da88901b49fde18b8bae9232e45","name":"@dovaogedot/polio","dist-tags":{"latest":"0.5.0"},"versions":{"0.1.0":{"name":"@dovaogedot/polio","version":"0.1.0","license":"MIT","_id":"@dovaogedot/polio@0.1.0","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"homepage":"https://github.com/dovaogedot/polio","bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"bin":{"polio":"bin/polio.js"},"dist":{"shasum":"0b70cc2ed2a3f9dddd80217c18243b7e3b22f8af","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.1.0.tgz","fileCount":4,"integrity":"sha512-LrjYI9rD/zIR+ZmND5z2z0Z1aUYguMm3IjsETOgRw49wUjPzuZBBPWOp+uBvahXnxnfThhEdFMPIvYEl023ASg==","signatures":[{"sig":"MEQCIBXog25adBOWJ2LpuknlpBJEVqS5EJEoH6YI5kGT0BliAiAhPJZQwSBHd3jrwDhwgivlq68dxodCS9l47dSqGWZctw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6379},"engines":{"node":">=18"},"_npmUser":{"name":"dovaogedot","email":"dovaogedot@gmail.com"},"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"_nodeVersion":"26.8.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.1.0","polio-darwin-x64":"0.1.0","polio-linux-arm64":"0.1.0","polio-darwin-arm64":"0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/polio_0.1.0_1788422812934_0.16263562876291138","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dovaogedot/polio","version":"0.2.0","license":"MIT","_id":"@dovaogedot/polio@0.2.0","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"homepage":"https://github.com/dovaogedot/polio","bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"bin":{"polio":"bin/polio.js"},"dist":{"shasum":"5ccaa1539514f635be04e862aa545bcfc79af2e8","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.2.0.tgz","fileCount":4,"integrity":"sha512-rl10f29Al8UluXt51UQ117z99DhD7fNldY6T48YK+v28ItIMM1ZfoeieAf6C7gSCJAzA1BUTR7CVCgauMWYAtQ==","signatures":[{"sig":"MEQCIEXpYtEilEhMh/tDGmtwq5XoZaQgRcu13C8d04spvFTdAiAkBogY2h1Os3iELR1tL7Xn6Nw5XRi65BNFV1tz9Nln/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dovaogedot%2fpolio@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6220},"engines":{"node":">=18"},"gitHead":"d4ebd6825a5206e1db9f7df89d7e9f85c7d28614","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:022df0b4-60e6-4bf4-bd26-f89662e46e5a"}},"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.2.0","polio-darwin-x64":"0.2.0","polio-linux-arm64":"0.2.0","polio-darwin-arm64":"0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/polio_0.2.0_1788446873946_0.4304076922098026","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dovaogedot/polio","version":"0.3.0","keywords":["dotfiles","config","sync","git","cli","chezmoi","yadm","stow"],"license":"MIT","_id":"@dovaogedot/polio@0.3.0","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"homepage":"https://github.com/dovaogedot/polio","bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"bin":{"polio":"bin/polio.js"},"dist":{"shasum":"0b34ecb7665c77a9dda7568a44964c93d9a17688","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.3.0.tgz","fileCount":4,"integrity":"sha512-HeQW2zxvbMNMOOPemVwlBzvoki5jRrwUYtdEeCflxPUOM2c7uInXHMaQ/bkQaDSW/BPac5nBEnjjZ315UrJvUA==","signatures":[{"sig":"MEYCIQD8tjscy75kg63QgRI8iK+U1Fsf8Z6I3MKlxN2uwNh6sQIhANrU0lr3cLLmCJcMjKd2GE3xKdg1aV0jcGJBPAUiCli+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCwXJ1pxr5KLE7akQbk7LncFrQ99hLzm9r8Jg+tgg/PlAIgVEfVgfnVQCr2wa6XUDRHn4AnVWrtRyDBJywQehWzGZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dovaogedot%2fpolio@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":6809},"engines":{"node":">=18"},"gitHead":"d35543ea54a3c2514679a44b82964d8d18dbc976","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:022df0b4-60e6-4bf4-bd26-f89662e46e5a"}},"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.3.0","polio-darwin-x64":"0.3.0","polio-linux-arm64":"0.3.0","polio-darwin-arm64":"0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/polio_0.3.0_1789375572473_0.847017150277201","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dovaogedot/polio","version":"0.4.0","keywords":["dotfiles","config","sync","git","cli","chezmoi","yadm","stow"],"license":"MIT","_id":"@dovaogedot/polio@0.4.0","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"homepage":"https://github.com/dovaogedot/polio","bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"bin":{"polio":"bin/polio.js"},"dist":{"shasum":"523617e800eed7053dbb4373bb0b506e72838545","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.4.0.tgz","fileCount":4,"integrity":"sha512-EznMzM9qSPCC8aXhax4SUKUsdEvzpPMT8bva6/2ggcgs377vj8lBykDGcS7GFrqOFrzzN78gK5lSNJfxNap4Pg==","signatures":[{"sig":"MEUCIQCdfBRQXA0sDH7wDaK5PHphUk6FWNfVxJuNg7V2P6jvswIgMXHExiJDMl0vM3PCmL9STtSawOdEDp+tTwzsAQf4vko=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCOjm2AG9Tmaszfs3X08kp9n4vmwsRZbBqL4zBX541VbAIgbeNg46Df8cPsBI3g21gFQn4MW6JiEdZ0VJGi26glQm4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dovaogedot%2fpolio@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7079},"engines":{"node":">=18"},"gitHead":"1ac9c34ffe72b25bcc0e742067c1638bfde7d314","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:022df0b4-60e6-4bf4-bd26-f89662e46e5a"}},"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.4.0","polio-darwin-x64":"0.4.0","polio-linux-arm64":"0.4.0","polio-darwin-arm64":"0.4.0"},"_npmOperationalInternal":{"tmp":"tmp/polio_0.4.0_1789380605922_0.9874033760504572","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dovaogedot/polio","version":"0.4.1","keywords":["dotfiles","config","sync","git","cli","chezmoi","yadm","stow"],"license":"MIT","_id":"@dovaogedot/polio@0.4.1","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"homepage":"https://github.com/dovaogedot/polio","bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"bin":{"polio":"bin/polio.js"},"dist":{"shasum":"0d4122b0c26f2a8aaeb132b15c22245803cebe7a","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.4.1.tgz","fileCount":4,"integrity":"sha512-u6WD0QSs9NZPYtbw2hR61DIcLiMHxLGxXcyARFeJ7WjsU2HbyOHdDnETCs5WKScd+HrYnB2u6iM31xBWblHTwg==","signatures":[{"sig":"MEQCIEb/TMavJxF4kmLqdmgbaJVB3P6oT70a+qAio7SFzcDcAiBOWVd9G5Ee7kJid4hmwMnsaLYpCSeebfuluaeJfJv/pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCBNoVovTCIU7nCljVvlJdvESvKnUDiqzKxnDcIaOjibAIhAJonDS9frGTAG1ouLPIuvZxOQZAMe4TNEEcfyhxYn+DF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dovaogedot%2fpolio@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7395},"engines":{"node":">=18"},"gitHead":"45f3e5ff0e42b1d90d7707a29633c38f687e2191","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:022df0b4-60e6-4bf4-bd26-f89662e46e5a"}},"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.4.1","polio-darwin-x64":"0.4.1","polio-linux-arm64":"0.4.1","polio-darwin-arm64":"0.4.1"},"_npmOperationalInternal":{"tmp":"tmp/polio_0.4.1_1789632186179_0.1739670039778316","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dovaogedot/polio","version":"0.4.2","keywords":["dotfiles","config","sync","git","cli","chezmoi","yadm","stow"],"license":"MIT","_id":"@dovaogedot/polio@0.4.2","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"homepage":"https://github.com/dovaogedot/polio","bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"bin":{"polio":"bin/polio.js"},"dist":{"shasum":"d043bc5b067390e83b36bf9e4a1820b933793faa","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.4.2.tgz","fileCount":4,"integrity":"sha512-Zh33mfq+RB5CPNMNc3xGp/QRtNSQJkfTlXg9inQykBqTcIk6mNx89exkPxvZuXTnjgNG1w6E1tZNvuJoH78UrA==","signatures":[{"sig":"MEQCIH1odTdy+ryqMQ18VK2FbT/v9ZtzjSXLSAqThQbV3vt2AiB2Ky51k4+m8ZZAD+Yht7X2VMu+ah/at6YLsxuJRmA7YA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIC9SMX8AQhCx0ysZhDUILkgA7Vkg8KMHO2DLzaltcntpAiB+pfqb70HKzMjEWyjd7tCC39zX5KbZkWVB6lkmrvWg3g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dovaogedot%2fpolio@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":7395},"engines":{"node":">=18"},"gitHead":"5a9b71d04025dc37c498477163ff20e2b3a64e87","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:022df0b4-60e6-4bf4-bd26-f89662e46e5a"}},"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.4.2","polio-darwin-x64":"0.4.2","polio-linux-arm64":"0.4.2","polio-darwin-arm64":"0.4.2"},"_npmOperationalInternal":{"tmp":"tmp/polio_0.4.2_1789633828206_0.4606303445267579","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"_id":"@dovaogedot/polio@0.5.0","bin":{"polio":"bin/polio.js"},"bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"dist":{"shasum":"6d6fccdb94cb7379400adb7e98b67a9af57d7420","tarball":"https://registry.npmjs.org/@dovaogedot/polio/-/polio-0.5.0.tgz","fileCount":5,"integrity":"sha512-jBuUS/UZSr6lnwqBGoTIHi4+G1WzwLbwVkEFZ7mVSjz7HEGNokFMHK/nfUj+N8qk34aaiyy96CPrv4lKXe766w==","signatures":[{"sig":"MEQCIFi9ceWWbAuhJdcqJzrwkuyPosnCIhF52Nr51Yh7HPgUAiArKIEzXzWBK3V6G4F7h1oeu3HPN6V0D+bXC/ci983rRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHqmZoO7vpbTEKBQe2lU9NPb24RMgtcUX+Q0fQkymlIoAiAhOvzrQhetPN7t1UGoJOZ6a82nh+VUppgjJlSxVlrPLw=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dovaogedot%2fpolio@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":18460},"name":"@dovaogedot/polio","engines":{"node":">=18"},"gitHead":"40dcd59122626ff953061e24c56ffd3ba1f2c3ce","license":"MIT","version":"0.5.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:022df0b4-60e6-4bf4-bd26-f89662e46e5a"}},"homepage":"https://github.com/dovaogedot/polio","keywords":["dotfiles","config","sync","git","cli","chezmoi","yadm","stow"],"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"_npmVersion":"12.0.2","description":"Sync config files between machines through a git repository","directories":{},"maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"optionalDependencies":{"polio-linux-x64":"0.5.0","polio-darwin-x64":"0.5.0","polio-linux-arm64":"0.5.0","polio-darwin-arm64":"0.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/polio_0.5.0_1789644577715_0.4258247941874045"}}},"time":{"created":"2026-09-03T08:06:52.673Z","modified":"2026-09-17T11:29:38.114Z","0.1.0":"2026-09-03T08:06:53.082Z","0.2.0":"2026-09-03T14:47:54.066Z","0.3.0":"2026-09-14T08:46:12.541Z","0.4.0":"2026-09-14T10:10:06.003Z","0.4.1":"2026-09-17T08:03:06.291Z","0.4.2":"2026-09-17T08:30:28.306Z","0.5.0":"2026-09-17T11:29:37.800Z"},"bugs":{"url":"https://github.com/dovaogedot/polio/issues"},"license":"MIT","homepage":"https://github.com/dovaogedot/polio","keywords":["dotfiles","config","sync","git","cli","chezmoi","yadm","stow"],"repository":{"url":"git+https://github.com/dovaogedot/polio.git","type":"git"},"description":"Sync config files between machines through a git repository","maintainers":[{"name":"dovaogedot","email":"dovaogedot@gmail.com"}],"readme":"# polio\n\nSync config files between machines through a git repository. One binary, one\ncommand per action, and git is the only thing it needs at run time.\n\n## Install\n\nWith npm, on Linux (x64, arm64) or macOS (arm64, x64):\n\n```sh\nnpm install -g @dovaogedot/polio    # or run it without installing: npx @dovaogedot/polio status\n```\n\nWithout Node, download the binary for your platform from the GitHub releases\nand put it on your `PATH`.\n\n## Use\n\n```sh\npolio init                                  # guided setup: remote, common config files to track, sync on shell start\npolio bind git@github.com:you/dotfiles.git  # the same without questions; clones into ~/.local/share/polio/repo\npolio add ~/.bashrc                         # track a file (a directory tracks every file inside)\npolio suggest                               # pick common config files to track from a list\npolio sync                                  # pull, reconcile, push (-f: conflicts keep the host copy, -y: the repo copy)\npolio sync --abort                          # discard parked conflicts; both sides stay as they are\npolio status                                # every tracked file and what sync would do; reads local state only\npolio -q <command>                          # --quiet: suppress stdout; -s / --shush suppresses stderr too\npolio remove ~/.bashrc                      # untrack (the host copy stays)\npolio updates off                           # stop the check for a newer polio (on / no argument shows the setting)\n```\n\nWith two machines:\n\n```sh\n# machine A\npolio init\npolio add ~/.bashrc\npolio sync                          # pushes ~/.bashrc\n\n# machine B\npolio init                          # answer with the same remote\npolio sync                          # ~/.bashrc arrives\nvim ~/.bashrc                       # edit the tracked file\nvim ~/.config/git/config\npolio add ~/.config/git/config\npolio sync                          # pushes both files\n\n# machine A\npolio sync                          # both files arrive\n```\n\n## How it works\n\nYour config files stay where they are. polio keeps a clone of your git\nrepository in `~/.local/share/polio` (`XDG_DATA_HOME`) with a copy of every tracked file, and a\nmanifest, `polio.json`, that says where each file lives on a host. Paths under\nthe home directory are stored as `~/...`, so hosts with different user names\nshare one manifest.\n\n`polio sync` pulls the repository, then compares each tracked file on the host\nwith the copy in the repository, using the content hash saved at the last sync\nto tell which side changed:\n\n- One side changed: that side wins, and the other copy is updated.\n- Both sides changed: polio asks for each file. Keep the local copy, keep the\n  repository copy, or skip. `-f` keeps the local copy without asking, and so\n  does a run without a terminal. `-y` keeps the repository copy without\n  asking. A replaced repository copy stays in git history; sync prints the\n  command that shows it.\n- Skip parks a copy with conflict markers under `~/.local/share/polio/conflicts` and leaves\n  both sides alone. Edit it until the markers are gone; the next sync applies\n  it to both sides. `polio sync --abort` throws the parked copies away.\n\nA sync also looks for a newer polio, once a day, and prints a line when one is\nout:\n\n```\npolio 0.5.0 is out — run: npm install -g @dovaogedot/polio@latest\n```\n\nThe line appears on every sync until you upgrade. The check comes with the npm\npackage and asks the npm registry, so an install from the AUR or a release\nbinary never sees it. `polio updates off` stops it and this host remembers that,\n`polio updates on` starts it again, and `polio updates` shows the setting.\n\nThe check sends nothing about you and never holds a sync up: it runs while polio\nworks, and an answer that has not arrived by the time polio is done is dropped\nand asked for again an hour later. A very short sync can outrun the answer, so a\nnew release sometimes shows up a sync or two after it appears.\n\nIt asks whichever registry npm would install from, so a `registry` line in your\n`.npmrc` is followed. The first sync after an install only starts the clock:\nwhat you just installed is the newest there is.\n\npolio syncs content, not permissions. Git records only whether a file is\nexecutable, so a mode like `600` never travels between hosts. A host file that\nis already there keeps its permissions. A host file that polio creates takes the\npermissions of the repository copy, which git wrote under the umask of that\nhost.\n\nChanges are committed after each sync, and pushed only when the remote is\nbehind. `add` and `remove` commit locally; the next sync folds those commits\ninto one and pushes it, so an add and a remove of the same file push nothing.\n`sync` is the\nonly command that talks to the remote, besides the clone made by `bind` and\n`init`.\n\n`init` can add a line to your shell profile that runs `polio sync -q` when a\nshell starts. The sync runs before the prompt appears, so every new shell waits\nfor the pull. Use it with an ssh remote and a key; an https remote asks for a\nlogin on every sync.\n\n## Yet another?\n\nOrdered by similarity.\n\n| Why not | Because |\n|---|---|\n| chezmoi | Edits go to chezmoi's source directory, and `chezmoi apply` writes them to your home. An edit made directly to `~/.bashrc` is drift: the next `apply` wants to overwrite it, and it survives only if you `chezmoi add` it first. With polio you edit `~/.bashrc` itself and `polio sync` carries it to the other machines. |\n| yadm, vcsh | Home becomes a git worktree; conflicts land in live files. polio keeps its clone in `~/.local/share/polio`. |\n| dotr, dotdrop, dotter | Deploy from a repository, with profiles and templates to learn; edits come back as a separate step, or not at all. polio syncs in one command. |\n| stow, dotbot, rcm | They link files into place; syncing between machines stays your job. |\n","readmeFilename":"README.md"}