dotfilesをgithubで管理する!

dotfilesとは

.vimrc とか .tmux.conf とか .screenrc とか .bashrc とか .zshrc とか、だいたいそういう設定ファイルの類です。それらをまとめてgithubで管理すると、どの環境でも git clone するだけで同期がとれてすごく便利です。

まあ

ぶっちゃけそれだけならいろんな人がやっています。いろんな人のを参考にすればいい。githubへの登録の仕方とかは自分で調べてください。簡単です。

yuroyoroさんはすごかった

しかし github で dotfils を管理するときにシンボリックリンクを自動的に貼るスクリプトを使うという発想はなかった。これはすごい。
iTerm2 + zsh + tmux + vim で快適な256色ターミナル環境を構築する - ( ꒪⌓꒪) ゆるよろ日記
このエントリはいろんな意味で最強すぎる。さすがにそこまではできない……けれど、

というのがとにかくすごく楽だ。

yuzuemonさんは気がきいていた

シンボリックリンクを貼るシェルスクリプトはいいけれど、それをもうちょっと確証してる
ボク式dotfiles - ゆず日記
なるほど、既にファイルが存在するかで条件分岐するのか

おれもやってみた

ちょっと改良したよ

#!/bin/bash

DOT_FILES=( .vimrc .tmux.conf .bashrc)

for file in ${DOT_FILES[@]}
do
  if [ -a $HOME/$file ]; then
    ln -s $HOME/dotfiles/$file $HOME/$file.dot
    echo "ファイルが存在しますから.dotファイルつくるよ: $file"
  else
    ln -s $HOME/dotfiles/$file $HOME/$file
    echo "シンボリックリンクを貼りました: $file"
  fi
done

既にファイルが存在する場合は .file.dot というのを作成します。これだけだと邪魔っぽいけど、Ubuntuみたいに既にデフォルトで .bashrc などが存在しているときに上書きして消すわけにもいかないのです。だから .dot ファイルを生成します。それで

cat .bashrc.dot >> .bashrc

とかやってやることで追記できるわけですね!

やってみた結果

複数環境での運用が楽すぎるWindowsではCygwin、Mac、それぞれのLinuxでどこでもgitさえあればこれで同期できます!ビバ!ってやつです!

ちなみに

おれの dotfiles は github にあります
.vimrcとか全般的にコメントを多めにつけてみたつもりなので、良かったら参考にしてください