homeshickでdotfilesを管理することにした
2014年は **インフラ構築自動化 して仕事をさぼる ** 、とふんわりした目標を立てた森です。
GitHub ❤ ~/
2013年年末大掃除で dotfiles の整理を始めたのですが、 整理するついでに単純にgitレポジトリに追加するだけでなく管理する手法を変えてみようかなと思いいたりました。
(現状はレポジトリに登録されている 各種ファイルを$HOME直下にコピーするだけのシェル をつかってるですがイケてない…せめてシンボリックリンクにしたい…。)
自分で作ってもいいけどなにか便利ツールないかな、とググり GitHubにおけるdotfiles非公式ガイド に出会いました。
ここでbootstrapとして紹介されているレポジトリからdotfilesを管理するツールの homeshick がしっくり来たので使っていくことにしました。 使い方をまとめておきます。
homeshickを選んだ理由
もともとこの記事は homesick について書くつもりでした。
homesick は gem で提供されています。 rbenv などを使っていればインストールが簡単ですがそうでない環境 (ユーザーにsudo権限ないとか今どき気にする機会もすくないんですけど…レンタルサーバーとかそんな環境)で gemをインストールするためにまずrubyをインストール、makeするために依存ライブラリをインストール…という作業が必要で、 gemをインストールするための依存性解決が簡単じゃない… と感じてしまいました。
その点 homeshick は homesick (ややこしい) と同様の実装を bash で行っています。 たいていのLinux(BSD)系環境ならばbashが入っているのでインストール、使用に苦労しませんでした。 ということでhomeshickを使っていきます。
homeshickの概要
homeshick (homesickもですが) はdotfilesを管理するためのシンプルなツールです。 シンボリックリンクを生成する際に特定環境で別名にするとか自動でアップデートしたいとか欲張ったことはできませんが、 シンプル故に割り切って使えます。
使い方概要は以下のとおりです。
- インストールする
- castle と呼ばれるdotfiles管理用Gitレポジトリを作成する
- castle にdotfilesを追加していく
- castle を git commit, push, pull をする
- castle に新規ファイルが追加されていたら link する
homeshickのREADME や wiki を一読するとより理解しやすいですので是非。
homeshickのインストール
wiki を参照しつつさっそくbash環境にインストールします。 zsh環境の説明は省きますがほとんど差異はないのでwikiを見ながら確認してください。
つづいてhomeshickコマンドの設定です。
これでhomeshickコマンドが使用できるようになりました。
castleの作成
homeshickコマンドを利用してdotfilesを管理するためのレポジトリを生成します。このレポジトリのことを castle と呼ぶそうでその流れに乗っておきます。今回は dotfiles_castle という命名にしておきます。
これで $HOME/.homesick/repos/dotfiles_castle
が生成されます。
castleにファイルを追加する
さっそくcastleにdotfileを追加していきます。例えば .bashrc を追加したい場合は下記のとおりです。
コマンド1つで
- castleレポジトリにファイルが移動する
- 元あったファイルがcastleレポジトリへのシンボリックリンクへ置き換わる
- ファイルが
git add
される
この3つの動作が行われます。
シンボリックリンクが生成される際には $HOMEからのパス で生成されるのでtrackするまえにあらかじめ$HOMEへ移動しておいたほうがいいです。
あとはcastleレポジトリにて git commit
するだけです。
castleレポジトリへの移動もhomeshickコマンドで出来ます。
あとはcastleレポジトリをGitHubなりにpushすればOKです!
まとめ
このつぎは他ユーザーの環境でcastleレポジトリの内容を同期するための手順をまとめますが、長くなってきたのこのへんでいったん終わりにします。
みなさんも一度homeshickを使ってみてください。
余談
なんで homes h ick なのかよくわからないので誰か知っている人は教えて下さい…