This document attempts to describe in plain language, all the things that the
...
, dotfile management system should do.
The ... sysytem as it exists today is the result of about 8 years of managing dot files in various contexts.
The rough history of ...
is this:
-
2006: lukec, cdent, ingydotnet and others created a system for sharing configs at Socialtext called
stconfig
. The main idea was to bring together a dev teams favorite unix confs into a pair programming environment. -
2010: ingydotnet creates
...
, an attempt to polish stconfig for general use. -
2012: rking does a ton of work on ... and related *-dots repos. Creates https://github.com/sharpsaw and http://sharpsaw.org (which seems to be down now).
-
2013: rjbs shows interest, but ... needs more love. ingydotnet writes this document.
The main component is https://github.com/sharpsaw/... (forked from
https://github.com/ingydotnet/...). This is the software repo which you install
simply by cloning it into ~/.../
:
(cd; git clone https://github.com/sharpsaw/...)
You need a conf file called: ~/.../conf
which is a YAML file containing an
ordered list of -dots repos (lots of examples of which can be found here:
https://github.com/sharpsaw/). There is a template file called
.../example.conf
with lots of comments.
The repos are cloned by ...
into ~/.../src/
.
Everytime you ... install
, the old dot files get copied into a timestamp
directory under ~/.../backup/
.
To start out with a new install, first create your ~/.../conf
, then run:
~/.../... update # clone/update repos (recursively w/ submodules)
~/.../... install # install all new dot files and backup old ones
exec $SHELL # Restart your shell
TODO: finish command list
It is probably time to rewrite ..., or at least refactor some. Here are some ideas:
-
We could rewrite ... in Bash. It might make it more accepted, but Perl is pretty ubiquitous. Will hold off for now. Having it a clone/run install is better than putting on CPAN imho, as this is targeted at new machines. plenv is an example of a Perl tool written in Bash.
-
Support plugins for commands.
-
Move from yaml to ini based conf.
-
Move to a git based backup system. This would be a big win imho.
-
Make loop-dots more robust and support more conf types.
-
Make symlinks be the default (maybe only) install_method. From experience, symlinks are the best method. (vs copy or hardlink).