So I currently have two laptops: one for work and one for personal use. There
is, however, a fair bit of overlap; I'd like to have a bunch of config files
~/.config/i3/config, etc) and a bunch of useful
~/bin) available in both places. I looked at a couple solutions,
including dotfiles and such, but a post on
StackOverflow had the outline of a
solution that I'm fairly happy
I put an alias into my
alias homegit='git --work-tree=$HOME --git-dir=$HOME/.home.git'
And wrote a little script to automate setup on new machines:
#!/bin/bash if [ -d "$HOME/.home.git" ]; then echo "homegit already set up." exit 1 fi homegit="git --work-tree=$HOME --git-dir=$HOME/.home.git" $homegit init $homegit remote add origin $MY_HOMEDIR_REPO $homegit fetch origin $homegit reset $homegit checkout -t origin/master
and then ran it. Then I wrote an
# exclude everything /* # ...except the following !/bin !/.home.git/info !/.xscreensaver !/.git_template !/.gitconfig !/.screenrc !/.bashrc !/.vimrc !/.xinitrc !/.config /.config/* !/.config/i3/
So only the files I wanted to save were listed in a 'homegit status'. Then I
homegit add them and could go to town!
I imagine maintaining the
info/exclude file is going to be the main issue,
but it's probably good for me to keep up with that minor skill anyway.