;;;;;
title: rcm: Another dotfile manager
tags: software, rc
date: 2014-07-03 17:53
format: md
;;;;;

A little while ago I saw a link pass by about
[rcm](http://robots.thoughtbot.com/rcm-for-rc-files-in-dotfiles-repos),
a RC file (or dotfile) manager. It seems a lot like using
[GNU Stow](https://www.gnu.org/software/stow/) for your dotfiles.

The basic idea seems to be that you create links to all your dotfiles
and the actual files are all kept in a single directory structure,
presumably for easy sharing with, for example, git.

## The good...

It seems that rcm has a few interesting features.

### Host-specific dotfiles

It gives you an option to have host-specific dotfiles, which is very
handy when you're working on multiple (types of) system. My laptop
doesn't always have the same needs as my PC and my server(s)
definitely have different needs.

## The bad...

In the short time I've spent with it, I've also found a few things I
don't much like.

### Everything in a single directory

I'm not so sure about the choice to put everything in a single
directory structure, which top-level dotfiles in the top-level
directory. This links all the files together in a repository-idea
kind-of way. I can't have a zsh repository and an Emacs repository
without also having different rcm source directories.

Actually, this isn't entirely true. I can still separate them, with
the use of [labels](#labels), but not in an ideal fashion.

### Unfriendly to directories

It doesn't seem to like linking directories, though it can. Linking
directories is essential for me as I can on occasion remove a file
from one of my configuration directories and I don't want to have to
keep track of dead links like that manually. If you do link a
directory, instead of it showing up in `lsrc` as a single entry, all
the files in the directory are shown separately.

<a name="labels"></a>
### Labels

The labels are a nice idea, but they aren't what I expected them to be
when I read the description. Like host-specific dotfiles, labeled
dotfiles are put in their own directory. This allows you to separate
the dotfiles from others. What I didn't like about this implementation
is that afterwards you always have to specify which label you want to
use, which seems to make it impossible to still setup your dotfiles in
a single command.

## Conclusion

I personally won't be using rcm to manage my dotfiles. The solution I
have right now with GNU Stow works better and is easier to setup,
although that too has its drawbacks.

This is not a definitive description or review of the software, I have
spent only a small amount of time with it and these are the findings I
made when trying to set it up with a few config files. If you really
want to know about it you should try it, it has quite a bit of
documentation to get you going.

<!-- Local Variables: -->
<!-- mode: markdown -->
<!-- End: -->
