For a years I was using a custom created scripts to keep my dot files updated. I had a local repository in bazaar and a script which check differences between home dot files and files stored in the repository. This solutions works fine for years, but now I want to do some changes…
The first one is moving my dot files to git (and probably pushed them to github), and the second one is to create a hook for git to update my dot files. I known that there are a lot of similar solutions, one more complex, other more easy, but this is mine π
So, I created a post-commit hook script for git, which perform the modifications that I need. Now I just only do this steps:
1. Create a new git repo:
mkdir mydots_repo cd my_dots_repo && git init
2. Put the hook:
wget -O .git/hooks/pre-commit http://2tu.us/2scm chmod 755 .git/hooks/pre-commit
Or just put this content to pre-commit hook:
#! /bin/bash # (c) 2010 Andres J. Diaz <ajdiaz@connectical.com> # A hook to git-commit(1) to update the home dot files link using this # repository as based. # # To enable this hook, rename this file to "post-commit". for dot in $PWD/*; do home_dot="$HOME/.${dot##*/}" if [ -L "${home_dot}" ]; then if [ "${home_dot}" -ef "$dot" ]; then echo "[skip] ${home_dot}: is already updated" else rm -f "${home_dot}" && \ ln -s "$dot" "${home_dot}" && \ echo "[done] updated link: ${home_dot}" fi else if [ -r "${home_dot}" ]; then echo "[keep] ${home_dot}: is regular file" else ln -s "$dot" "${home_dot}" && \ echo "[done] updated link: ${home_dot}" fi fi done true
3. Copy old files:
cp ~/old/bzr_repo/* . git add *
4. Commit and recreate links:
git commit -a -m'initial import'
And it’s works π