Macのdotfilesをhomesickで管理する
扱うMacの台数が増えてきたので、そろそろ本気でdotfiles(.zshrcとか.vimrcとか)を管理してみることにしました。
単にGithubでdotfilesを管理するだけでもいいのですが、調べてみるとhomesickというgemを使うのが今はイケてるっぽい。
1. homesickを入れる
とりあえずhomesickを入れます。
$ gem install homesick
rbenv使っている場合はrbenv rehash
を忘れずに。(私はいつも忘れます。はい。)
2. GitHubにdotfilesリポジトリを作る
Web上から空のリポジトリを作っておいてもいいし、brewでhub入れてるならhubコマンドで作ってもいいです。
そしたら、ローカルの適当な場所に、dotfilesという名前でディレクトリを作成します。ここでgit init
しておきます。
$ mkdir ~/dotfiles && cd ~/dotfiles $ git init
さらにdotfilesの下にhomeという名前でディレクトリを作成します。そしたらこの中に、管理したいdotfile達をコピーしていきます。
$ mkdir home && cd home $ cp ~/.zshrc . $ cp ~/.vimrc . $ cp ~/.tmux.conf .
管理したいファイルをすべてコピーしたらgit add .
してからコミットしましょう。あとは先ほど作ったリポジトリにpushすればOKです。
(Gitの使い方とかGitHubへのpush方法は割愛します。)
3. homesickを使う
では早速homesickを使っていきましょう。
homesick clone
コマンドでdotfilesをhomesickの管理下に置けます。引数に、[GitHubのユーザ名]/[リポジトリ名]を渡すといい感じにcloneしてくれます。
私の場合は以下の様なコマンドとなります。
$ homesick clone braitom/dotfiles
そうすると以下の場所にcloneされます。
~/.homesick/repos/dotfiles
これで準備は整いました。後は実際に使う場所からsimlinkをはります。
私の場合はhomeで使いたいので以下の様な感じとなります。
$ cd ~ $ homesick symlink dotfiles
そうすると自動で~/.homesick/repos/dotfiles/homeフォルダの下にある全部のファイルにsymlinkが貼られます。
なお、ファイルが既にある場合は上書きするかどうか聞いてきます。以前のファイルを念のためバックアップしておきたい方はバックアップしておくことを忘れずに。
念のためls -la
できちんとsymlinkが貼られているか確認しておくことをお勧めします。
これ以降は~/.homesick/repos/dotfiles/をGitで管理していくことになるので、この時点で手順2で最初に作成した dotfilesデレクトリは消してしまってOKです。
なお、homesickでcloneするとremote.origin.urlがhttpsになっているのでsshに変更しておきましょう。特にGitHubに2段階認証を設定している場合は面倒なので変更しておくことをお勧めします。
$ git config remote.origin.url git@github.com:braitom/dotfiles.git
GitHubのssh設定が分からない方は以下に手順が書いてありますので参考に。
ちなみにhomesick list
でcloneしているリポジトリが分かります。
$ homesick list dotfiles git@github.com:braitom/dotfiles.git
あとは、~/.homesick/repos/dotfiles/homeのdotfile達を変更、追加する場合は通常のGitリポジトリとして管理していけばOKです。
ファイルを変更した場合は、
$ homesick commit dotfiles #vimが開くのでコミットメッセージを入れて保存 $ homesick push dotfiles
これでコミットされてpushされます。
ファイルを追加した場合は、homesick addみたいなコマンドがないようなので、
$ cd ~/.homesick/repos/dotfiles $ git add .
して、あとは変更時と同じようにコミットしてpushすればOKです。
3. 違うMacでhomesickを使ってdotfilesを同期する
だいたい分かるかと思いますが一応書いておきます。細かいことは上で書いた手順と同じなので割愛します。
- homesickのインストール
$ gem install homesick
- dotfilesリポジトリのclone
$ homesick clone braitom/dotfiles
- symlinkをはる
$ homesick symlink dotfiles
4. 運用方法
これであとはどのMacでもdotfilesの追加、更新をhomesick経由で管理していけばOKです。
違うMacで変更した設定を反映させるには以下のコマンドで。
$ homesick pull dotfiles
5. まとめ
このようにお手軽にdotfilesをGithub上で管理できるようになります。
いやーhomesick便利ですねー。
ちなみに私のdotfilesは以下にありますので興味がある方はご覧く下さい。各ファイルともまだまだまだ貧弱なのでアドバイスとかいただけると嬉しいです。