Syncing Scratch Projects and Preferences Between Macs

Last week, I moved from the one computer lifestyle to having two different Macs — an M1 Mac Mini and MacBook Air. Using both is creating two points of friction I’d really like a better solution for.

The first is that I have a lot of little test coding projects that I start that I might want to use both computers, but which I’m not ready to create a new repo on GitHub for. What do I do? I can either:

  • Keep them in iCloud Drive folder until I’m ready to move them over to GitHub? It seems like that would be okay as long as they’re not also git repos, since I’m told having repos in iCloud Drive is problematic, although I’m not entirely sure it is in practice, rather than theoretically.
  • Have a git private git repo — “Scratch” — that I put all of my temp projects in to sync them across machines. If something graduates to its own repo, I’ll move the files out of scratch and set that up. A scratch repo is less ideal — because it means I still have to remember to commit — but it sort of solves the problem.

The second issue is syncing app preferences. The only app I know that does this without intervention is BBEdit, because of course, it does, but I’d also like my Xcode keyboard shortcuts, Terminal themes, and everything else to work this way. The best solution would be for this to be a feature of iCloud, obviously, but it isn’t.

One solution is I could add each thing individually to my dotfiles repo and use a script to set up symlinks. I do this for my actual dotfiles, and it works fine for those, but there are not that many of them — doing it for every app I want to sync sounds tedious. I also don’t like that I have to remember to commit and pull to keep things in sync.

I could also use this Mackup thing, which is a project on GitHub that claims to do what I want automatically, but which I find a bit terrifying to unleash on my machines?

If anyone has a better solution for either of these, please reach out. My goal is to pick up either of these functionally identical computers and use them without worrying about how they’re set up or where things are.

Collin Donnell @collin