A fortnight ago I finally moved my shell config into a proper versioned repo with a bootstrap script, and I half expected to write the usual sequel where the clever system falls apart on contact with reality. It hasn't. If anything the quiet wins have been bigger than the headline one.
The headline win, cloning onto a fresh machine and being productive in a minute, is exactly as nice as advertised and I knew it would be. The surprise is what versioning did to my behaviour. I now fix small annoyances the moment I hit them, because the fix is a one-line edit and a commit instead of a "must remember to copy this to the other boxes" I'd inevitably forget. My aliases file has grown more in two weeks than in the previous two years.
The symlink-everything decision keeps paying off too. Because ~/.vimrc is just a link into the repo, git status in ~/.dotfiles is a live picture of every change I've made since the last commit. No drift, no "which machine has the good version", because there is only one version and it's the one in front of me.
One convention earned its keep faster than I expected: keeping secrets and per-machine paths out of the repo by sourcing a ~/.localrc that's never committed.
# bottom of bashrc, in the repo
[ -f "$HOME/.localrc" ] && source "$HOME/.localrc"
Work machine gets its work email and proxy settings in ~/.localrc; the laptop doesn't. The shared config stays genuinely shareable, which matters because I'm now fairly sure I'll make this repo public at some point and I'd rather not do a frantic history rewrite first.
If you've been putting this off, and I put it off for years, the thing I'd say is that the value isn't really the bootstrap script. It's that config you can commit is config you'll actually improve. Mine was frozen for half a decade. Two weeks in git and it's alive again.