Dear Lazyweb…
by Mez on Sep.28, 2009, under Personal
Is there a decent dotfile manager packaged in Ubuntu/Debian? I need something that’ll let me have a repository of my dotfiles and manage them easily amongst multiple locations.
I’ve seen a lot of homebrew implementations of something like this, I’m just wondering if there’s something that’s worth using already out there!
September 28th, 2009 on 5:20 pm
When you say dotfile, do you mean dotfile or config file in etc?
I tend to use etckeeper, but I haven’t synced my “dotfiles” in quite a while :S
Let me know if you find something!
September 28th, 2009 on 5:23 pm
A simple solution would be to use rsync and make an rsync-filter file that only includes dotfiles.
September 28th, 2009 on 5:26 pm
I used to have subversion home directories across my machines, overkill and it didn’t last.
September 28th, 2009 on 5:39 pm
I can’t imagine something that would work better than a version control system. I keep my dotfiles in Git, which works really well; feel free to check out git://joshtriplett.org/git/home if you want.
September 28th, 2009 on 5:40 pm
I too came up with my own system – I have ~/.dotfiles/ containing files such as:
_vimrc
_screenrc
_emacs
Then a small makefile to add/remove symlinks to those files. The actual files are stored under revision control and the system works well enough – but it would be nice to have something more general purpose.
September 28th, 2009 on 5:48 pm
I am using Dropbox with symbolic links pointing to the appropriate dotfiles. Works like a charm for me and my multiple boxes.
September 28th, 2009 on 5:54 pm
I just started to manage my dotfiles with Git today. First I created a .dotfiles directory in ~, moved the relevant dotfiles there and made a script to create symlinks in ~.
My plan is to have master contain all common settings, and have one branch for each computer (desktop/laptop/netbook/possibly university computers) to allow local customizations. If I’ve made a change in a local branch that I want to apply everywhere, I cherry-pick it from master (not sure how good this works yet).
Guess you can count this as a “homebrew implementation”, but if you’re confident with Git (which I’m not) it should be fairly straight-forward to setup. I haven’t found a perfect guide for this, but a search for “git dotfiles” should give you some hints.
September 28th, 2009 on 6:39 pm
I long the day all the apps will just use ~/.config/
September 28th, 2009 on 6:50 pm
@Steve: Why the separate directory and the symlinks?
September 28th, 2009 on 7:45 pm
Ubuntu Debian? You missed something inbetween, isn’t it?
September 29th, 2009 on 3:43 am
If you have a script for autocreating symlinks into a directory, you might also want to write a script for migrating newly-created real dotfiles into the directory and replacing them with symlinks.
September 29th, 2009 on 4:01 am
http://vcs-home.madduck.net/
September 29th, 2009 on 7:39 am
@josh: because you don’t need every dotfile on every computer. sometimes, you have different versions of your dotfiles for different machines. The indirection allows to control what dotfile is actually in use more in a more fine-granular way.
FWIW, I have my ~/.env bzr controlled and symlinked at the actual locations.
September 29th, 2009 on 9:42 am
The seperate directory is needed so that repository can be checked out – its really as simple as that.
If I have “.dotfiles/” under revision control then it can be checked out to ~/, or to ~/local, or similar.
While I could store ~ under revision control I find that the contents vary too much on different machines. So in practise I have three repositories:
~/.dotfiles [Shell config, emacs config, etc]
~/.dotfiles-private [Procmail + Mutt config - files that are sensitive]
~/bin/ [Shell tools etc]
September 29th, 2009 on 4:46 pm
I decided to take this post as an opportunity to rationalise my setup.
So I’ve posted: http://www.steve.org.uk/tmp/dotfile-manager.txtr
September 29th, 2009 on 7:24 pm
This is an interesting read for you:
http://she.geek.nz/archives/546-migrating-my-homedirectory-from-one-repo-to-many.html
It describes the process of using git in an awesome way to achieve this, but is really homebrewn, too.
I’d really like to see something like etckeeper especially for dotfiles.
However, maybe just using etckeeper on $HOME would work good enough? – at least for keeping track that is. You may use different repositories for different kind of files still, e.g. a repo/directory for vim config.
September 30th, 2009 on 3:55 pm
I keep my home directory in Subversion. It’s nice that you can check out subdirectories, since checking out the whole ~ is usually overkill (too big, too slow)/painful (conflicts with unversioned files)/not what I want anyway (*lots* of automatically generated/updated files).
For this reason I also keep my most important dotfiles in ~/dotfiles, with symlinks pointing to them. This separate subdirectory stuff worked great for ~/.mutt and ~/.vim (with an extra symlink for ~/.vimrc).
October 7th, 2009 on 3:33 pm
I use unison to sync the dotfiles around. It’s not as featureful as a VCS-based solution, but it forces me to keep the configuration the same on all machines, which is arguably a good thing.