2012年8月12日 星期日

使用 github.com 同步管理個人資料設定檔

#老實說這幾天堆了一大堆沒寫的資料在 blog 中,但是都不是很想動筆,剛好現在想動手指而又找不到遊戲可以玩,就轉成寫文章的動力好了。

之前在 Github.com 上找資料時曾經看過有人在上面管理 .vim/.vimrc 甚至是整個 $HOME directory 上的多個 dotfile 的管理,只是一直都沒有付諸實行,直到這次硬碟壞掉才真正付諸實行。


目前選用的是 Sursolid 的方法,自己用 alias 設定一個新的命令,如此一來既不用創一堆連結,也不會讓 $HOME 資料夾變成一個 git 的 repo。


首次設定

# 創 git repo 的資料在 $HOME 下 $ cd ~ $ mkdir .homeconfig.git # homeconfig 之簡寫,因為太長不好打 $ echo "alias hc='git --git-dir=$HOME/.homeconfig.git/ --work-tree=$HOME'" >> .zshrc $ source .zshrc # 初始化 git repo $ hc init $ hc add .zshrc $ hc commit -m 'Initial commit' # 上傳到 github $ hc remote add origin git@github.com:GITHUB_USERNAME/homeconfig.git $ hc push origin master 
同步設定:
$ cd ~
# 備份
$ mv .zshrc .zshrc.bakup
$ git clone git@github.com:GITHUB_USERNAME/homeconfig.git homeconfig.git
$ mv homeconfig.git/.git .homeconfig.git
# 連 dotfile 也一起複製到 .
$ setopt -s dotglob
$ mv -i homeconfig.git/* .
$ rmdir homeconfig.git

另外由於 repo 本身就位於 $HOME 下,創建 $HOME/.gitignore 等於對所有的 git repo 生效,若只有本 project 要單獨忽略的檔案要改寫在 $HOME/.homeconfig.git/info/exclude中


題外: blog 的 syntax highlighter  果然還是件麻煩的事,最想要 Python 的那種 code block ,可移除 >>> 和 return value 只留下可輸入的程式碼。

另外針對設定檔不在 $HOME 下而要使用 sudo 修改的此篇也不適用,不過在知道 patch 和 git patch 可用的情況下應該可多少做個備份。

參考:
Managing home .dotfiles with git and GitHub - Sursolid
c9s: 使用 Git 管理自己的 dotfiles
GitHub does dotfiles - dotfiles.github.com

2 則留言:

  1. 回覆
    1. XD,沒那麼常用 Dropbox 所以沒想到,不過現在這樣就夠了。現在大概可用 Dropbox 存一些不大想放在 github 上的設定。

      刪除