I have several different environments I work in, and several different sets of dot-files I use in each.
Use-Case
Consider the example (simplified scenario). I have 3 environments:
- work-desktop
- work-server
- home-desktop
and I have some dotfiles, which I want to replicate in different environments.
.tmuxrc
--> work-desktop, work-server, home-desktop.fish/
--> home-desktop.subversion/
--> work-desktop, work-sever- A different
.zshrc
for each of work-desktop, work-sever and home-desktop - one
.vimrc
for work-desktop and work-server, and another.vimrc
for home-desktop
Later I might like to change thing so that, I have one .vimrc
for everywhere (when I update my homeone to use vundle, and unbreak vim's python compat at work).
Requirements:
Must support specifying different files for different environments
Must support some files being shared across some environments
Must avoid me having to manually copy files and then symlink them back
Should commit to version control when triggered
Should pull from version control when an update is called.
Should support git
Would be nice if it supported other version control (like SVN, and Hg)
Would be nice if its config file for specifying which files got to which environments took a list of hostnames, but other solutions to the exist.
Don't care if it is dependent on anything (A lot of .dotfile management tools i looked at advertised not being dependent on anything but the shell)
Must work on all flavours of Linux (but I don't really care about Mac).
Must be Free and Open Source.
I hard a close look at RCM, but I am not sure that it meets my version controlling requirements. I also had shorter looks at GNU STOW and Dotbot.