4 ms·
I created a dotfiles management tool, yadm https://yadm.io https://yadm.io I'm a huge fan of Git, and the Git mental model just makes sense to me. I wanted to
by TheLocehiliosan 5y ago
I created a dotfiles management tool, yadm https://yadm.io https://yadm.io
I'm a huge fan of Git, and the Git mental model just makes sense to me. I wanted to manage my dotfiles in the same way. At the time I had tried several other solutions, mostly similar tools like homeschick and vcsh.
I wanted a solution that was very portable, which both of those existing tools were. However, homeschick became a bit clunky to use because each time I wanted to do most operations I had to first "cd" into my "castle". In addition, that tool used symlinks, which doesn't work out well to manage a file that may get overwritten by a tool.
vcsh was the other main tool I tried. This tool adopts the bare repo technique, allowing files to be used instead of symlinks. The major drawback it had was that it was designed to work with multiple repos, and forces you to specify the repo with every command. Some simple aliasing helped mitigate that though. But by that time I also started writing some custom code to encrypt private data and was struggling to maintain different branches for different systems which had slight tweaks to configurations. It just became all fragmented and difficult to manage.
That is what lead me to create my own tool. The important features I wanted: portability, seamless interaction with Git, alternate files for different hosts, encryption for private data. I shared it as open source back in 2015 and it has grown in popularity some. It's been improved a lot over time including contributions from others. I'm glad so many others have found it useful.
- Cyberdog 5y agoThis looks cool. I currently have a nest of dotfiles I manage with Git, and since I try to use them across Ubuntu, OpenBSD and macOS, the platform-specific stuff seems useful. But is there a way to "promote" my existing Git repo to something yadm can use? If I just `cd ~; yadm status` I'm told a Git repo doesn't exist, when it most certainly does (`git status` behaves as expected). Or is the best way to just blow away my existing .git directory and start over using only yadm? I skimmed your docs for an answer to this but couldn't find it.
- TheLocehiliosan 5y agoThe best way would be to use “yadm clone” to clone the remote repo. yadm will keep its repo in ~/.local/share/yadm/repo.git. Once cloned, you do not need to be in any specific directory to run yadm.
- comatory 5y agoI have been using this for few years. It's great and I think it fits well how developers want to configure and backup overall.