I'm currently traveling and working off my other laptop. My main computer is now a desktop machine.
My question is: What do you do to share your development configuration between devices? Specifically both of my computers are macs. I'm interested in specific technology I can be using to help with this, in addition to general discussion around this topic.
Thanks!
Top comments (25)
Git is the answer. This allow you to store config/dotfiles in the cloud and version control it. I've follow this guide many moons ago and have been seamlessly transferring config back and forth. The downside is this isn't automatic.
my dotfiles
Was going to say the same. git is a pretty good solution.
Nice. Thanks Mac!
I recommend having an installable dotfiles repo (mine is github.com/markoa/dotfiles).
By linking your local files to the files in the repo, you almost completely eliminate the effort of keeping it up to date.
This! And add a Cron that runs a script that updates everything from git, including itself and the Cron, so you get the changes with 0 effort
Great tip!
The first part is good. But it's the second that made me realize this is the best option!
I haven't applied this in the context of sharing IDE config between devices, but...
I have 2 git repos that correspond to physical devices (my working laptop & my home server). I use each git repo as the source of truth for configs (typically via
ln -s
) and scripts for both provision & maintenance.I did this primarily for disaster recovery but it's easily repurposed for sharing
I am a huge fan of using Docker for any thing I need for development...
When I say anything I include text editors like Sublime or Visual Studio Code. I also have dockerized Browsers, Postman, MySQL workbench, Android Studio 3, just to name a few.
So my strategy is to build docker stacks for all the programming languages I work with and then I add and extend them in each project I work.
My computers are not MAC but others using vanilla Ubuntu installations where I install docker, docker compose, git and almost nothing else more, thus when I need to upgrade OS is dead simple. Maybe you can use more Docker in your MAC???
In each computer I need to work I just download a github repo that install all this in a bin folder to be accessible in my path, as any other linux tool... The repo is still a work in progress, but you can get an idea of it here and you can see all my current docker images here and here and finally the Elixir Docker Stack.
There's a lot of direction here towards storing your config in source control, just make sure you're OK with what you're storing and assure yourself that if a stranger were to get ahold of your config that nothing could be exploited with that config data.
For example, don't store your secret API access keys in your config in your git repository. I've seen plenty private repositories get forked by contractors (or inexperienced friends/developers) and somehow get published publicly or leaked. It's easiest to avoid all of this by having other means of sharing that sensitive data.
I'm using VSCode with the Settings Sync extension. This allows you to create a private Gist to sync your settings. I have found this to work pretty well.
It may not be a shiny new fancy solution, but if you can access your other host directly,
rsync
is great for this. Ignore identical files, set things to specifically exclude, and it doesn't involve an intermediate stage, so you're not doing something like committing secrets into a repo.About using
rsync
I use github gists to store simple things. My VS code settings is in a gist, I use an extension for this.
All other quick settings or desc, or anything code/dev related, I use gists for that as well. I use the app called Lepton and you can use your gist like Evernote with it. Except, you wouldn't need your gists in your mobile. I also store all my quick reference code snippets there. It's super cool and comes handy at times.
A dotfiles repo for sure! Many tools also let you export your configuration profile as JSON or some other format, conducive to being committed as well. Not sure if you can point to a version-controlled file or if you have to re-import when there are changes, but better than tweaking tens of checkboxes and values in a GUI! I haven't done this yet but I will be mad I didn't the next time I set up a new machine 😄
In a way, this is a follow up to this post:
I'm planning to ditch my MacBook and move away from laptop computing
Ben Halpern
Things have been going well, but still have some things to work out, clearly.