複数PC間で設定ファイルを同期できるhomesickが便利
複数PCを使っていると、.bashrcやら.emacsやらの設定ファイルの同期がめんどくさいと思ったことはないでしょうか。
家のPCで新しい設定を追加したけど会社でもおんなじ設定使いたい・・・とか、会社の色んなサーバで作業する時におんなじエイリアス使いたい・・・とか。
そんな面倒な作業を楽にしてくれるのがhomesickです。
ここで簡単な使い方をご説明します。
インストール
rubyが入っていることが前提ですが、
$ gem install homesick
だけです。rvmを使ってなければ頭にsudoをつけてください。
使い方
まずは自分の設定ファイルを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の方はもういじりません。ぜひ本家をご利用ください。ということで冒頭のインストールコマンドと、最後のソースコードリンクを修正しました。

「最短で学ぶReactとReduxの基礎から実践まで」10%OFFクーポン
UdemyでReactとReduxの動画講座を公開しています。
このブログの読者限定クーポンを使って、基礎から実践までを学びましょう。
「最短で学ぶReactとReduxの基礎から実践まで」10%OFFクーポン

UdemyでReactとReduxの動画講座を公開しています。
このブログの読者限定クーポンを使って、基礎から実践までを学びましょう。