After using homesick, Dropbox, and homeshick to store my dotfiles
I realized I might be able to just make a lite wrapper around Git to similar
effect. gitsick lets you store your dotfiles in multiple Git repositories
but deploys them to your home directory instead of depending on symlinks.
Put gitsick somewhere in your PATH and source gitsick.sh in your
.bashrc.
You can set the directory you store your repos in with:
git config --global gitsick.dir <directory>
The default is $HOME/.gitsick.
gitsick init [NAME]
gitsick clone <name> <url>
gitsick <name> <subcommand>
gitsick is mostly just a wrapper around git.
clone and init have different syntax due to the fact that they both allow
you to specify a target directory but with gitsick you would just specify
a name.
status hides untracked files by default since not doing so would easily kill
performance. You should be able to create a .gitignore files if you want to
see untracked files. You will also need to add -u to your status command.
Create a new repo with gitsick:
gitsick dotfiles init
Import your homesick repo's home directory:
gitsick --work-tree ~/.homesick/repos/dotfiles/home \
dotfiles add ~/.homesick/repos/dotfiles/home/
Commit and push:
gitsick dotfiles commit -m 'import from homeshick'
gitsick dotfiles remote add origin ...
gitsick dotfiles push -u origin master
You can get 90% of the value of gitsick using just an alias:
alias dotfiles="GIT_DIR=$HOME/.dotfiles.git GIT_WORK_TREE=$HOME git'
If you plan on using multiple repositories then you will need to deal with that
in the same way gitsick does. You will also want to make a git alias to
not show untracked files for git status or to setup a .gitignore file.