複数PCを使っていると、.bashrcやら.emacsやらの設定ファイルの同期がめんどくさいと思ったことはないでしょうか。

家のPCで新しい設定を追加したけど会社でもおんなじ設定使いたい・・・とか、会社の色んなサーバで作業する時におんなじエイリアス使いたい・・・とか。

そんな面倒な作業を楽にしてくれるのがhomesickです。

ここで簡単な使い方をご説明します。

インストール

rubyが入っていることが前提ですが、

$ gem install homesick

だけです。rvmを使ってなければ頭にsudoをつけてください。

SPONSERD LINK

使い方

まずは自分の設定ファイルをgithubに上げましょう。

# リポジトリのフォルダを作成(フォルダ名はなんでもよい)
$ mkdir dotfiles
$ cd dotfiles

# リポジトリの直下にhomeという名前のフォルダが必要なので作る
$ mkdir home

# 今使ってる設定ファイルをhomeフォルダにコピー
$ cd home
$ cp ~/.zshrc .
$ cp ~/.emacs .

# add して commit
$ git add .
$ git commit -m "initial commit"

# あらかじめ作っておいたgithubの新規リポジトリにpush。(リポジトリ名はなんでもよい)
$ git remote add origin https://github.com/muratayusuke/dotfiles
$ git push -u origin master

これでgithubに自分の設定ファイルがアップされました。

それでは早速homesickを使ってみましょう。

$ homesick clone muratayusuke/dotfiles

このように homesick clone [ユーザ名]/[リポジトリ名]とやると、githubのリポジトリからcloneしてくれます。普通にURLを渡せばgithub以外のリポジトリからもcloneできます。clone先のディレクトリは

~/.homesick/repos/muratayusuke/dotfiles

になります。

これだけでは反映されないので、実際に使う場所からシムリンクを貼ります。

$ homesick symlink muratayusuke/dotfiles
$ ls -la ~
lrwxrwxrwx  1 muratayusuke muratayusuke       70 Dec  2 23:28 .emacs -> /home/muratayusuke/.homesick/repos/muratayusuke/dotfiles/home/.emacs
lrwxrwxrwx  1 muratayusuke muratayusuke       70 Dec  2 23:28 .zshrc -> /home/muratayusuke/.homesick/repos/muratayusuke/dotfiles/home/.zshrc

こんな感じで、自動でdotfiles/homeフォルダの下にあるファイル全部にシムリンクを貼ってくれます。

では、違うPCで変更した設定を反映させたい場合はどうすればいいでしょうか

$ homesick pull muratayusuke/dotfiles

うん、わかりやすい。

その他あれこれ

このhomesick、オリジナルはこちらですが、pull requestを送ってもリアクションないしメンテされてないっぽくて、しゃーなしでyahomesick(Yet Another Homesick:もうひとつのhomesick)という名前に変えて勝手にgem公開しちゃいました。

オリジナルからの変更点はこんな感じです。

・dotfilesが多重サブモジュールを持ってても再帰的にupdateしてくれるようにした(元は1階層しか対応してなかった)
・homesick clone muratayusuke/dotfilesってやるとread-onlyでcloneしちゃってたのを、ローカルでいじってpushしたかったのでwriteできるsshプロトコルで落としてくるようにした
・homesick commitやhomesick pushなどのコマンドを作ってる人がいたので勝手に取り込んだ

3つ目のcommitとかpushとかはおもしろそうやから入れてみましたが、いつも直接clone先のフォルダに潜って作業するのであんまり使わないです。

あといちいちリポジトリ名を打つのがめんどいので、デフォルトのリポジトリを持っといてhomesick pullとかだけでいけるようにしたいです。おいおいいじります。

というわけで、もっとこんな機能欲しいとかバグがあったとかありましたらツイッターでもfacebookでもお気軽にご連絡ください。

pull requestを送っていただけるとなお嬉しいです。

ソースコード:https://github.com/muratayusuke/yahomesick

ソースコード:https://github.com/technicalpickles/homesick

追記(2013/07/02)

だいぶ前にhonesick本家のメンテナになれたので、yahomesickの方はもういじりません。ぜひ本家をご利用ください。ということで冒頭のインストールコマンドと、最後のソースコードリンクを修正しました。