.zshrc
や .gitconfig
といったコマンドやツールの設定ファイルなどを記述するドットファイル。
自分好みにカスタマイズして便利にしている人も多いかと思います。
複数のマシンを使っていると自ずとこのドットファイルを同じように使いたくなります。
そのように複数のマシンでドットファイルを共有する際に便利なのが今回ご紹介する homesick
!
gitを使ってドットファイルを簡単出来るようになり、更にコマンド一発でドットファイルの設定を読み込むようにする事が出来ます。
homesickの仕組み
homesickの仕組みは以下のようになってます。
- homesickが指定するフォルダにドットファイルを配置
- このフォルダをGit管理する
$ homesick symlink dotfiles
コマンドを叩く事でドットファイルが本来あるべき、~/
にシンボリックリンクが配置される
最終的に以下のようなフォルダ構成になります。
~/
# ~/直下のファイルはシンボリックリンク
.gitconfig -> /Users/yuu/.homesick/repos/dotfiles/home/.gitconfig
.zshrc -> /Users/yuu/.homesick/repos/dotfiles/home/.zshrc
# homesickが管理するフォルダにドットファイルの実体がある
.homesick/
repos/
dotfiles/
home/
.gitconfig
.zshrc
homesickのインストール
gem
を使ってインストール
$ sudo gem install homesick
# DL出来た事を確認
$ homesick -v
1.1.6
リポジトリの作成とMacの設定
リポジトリの用意
Gitで管理するためリポジトリを用意します。
ここではGitHubを例にしますが、bitbucketなど他のサービスでももちろん問題ないです!
注意点としてはリポジトリ名を「dotfiles」にしておくこと!!
(フォルダ名がdotfilesじゃないとhomesickが反応してくれないため)
必須ではないのですが$ git clone
した後にフォルダ名を変える必要が出てくるので「dotfiles」にしてしまった方が楽です。
ローカルのフォルダを整える
homesickを使ってドットファイルを管理するためには最終的に以下のようなフォルダ構成を取る必要があります
.homesick/
repos/
dotfiles/
home/
.zshrc
.gitconfig
・・・
こうやってみると結構フォルダ階層が深いですね
フォルダを作成していきます、まずrepos/まで
$ mkdir -p ~/.homesick/repos && cd ~/.homesick/repos
repos/でcloneします、ユーザ名のところは適宜変更を
$ git clone git@github.com:<ユーザ名>/dotfiles.git
# ex: git clone git@github.com:yuki-takara/dotfiles.git
ここまで行うと以下のようなフォルダ構成になっているはず。
.homesick/
repos/
dotfiles/
ドットファイルの設定
ドットファイルの実体をhomesickのフォルダにコピーする
dotfiles/内にhome/が必要で、そのhome/でドットファイルを管理するため、 homeフォルダの作成&移動をします
$ cd ~/.homesick/repos/dotfiles/ && mkdir home && cd home
ドットファイルの実体を持ってきます。
ここでは試しに.gitconfig
と.zshrc
を管理出来るようにしてみます
cp ~/.gitconfig .
cp ~/.zshrc .
これで以下のような構成になりました!
.homesick/
repos/
dotfiles/
home/
.gitconfig
.zshrc
・・・
シンボリックリンクを貼る
いよいよhomesick
コマンドを使います!
途中「Overwriteする?」と聞かれますが迷わずEnterを押します。
もし不安な人はドットファイルをどこかにバックアップしておきましょう
$ homesick symlink dotfiles
conflict /Users/yuu/.zshrc exists
Overwrite /Users/yuu/.zshrc? (enter "h" for help) [Ynaqdhm] #EnterもしくはY押下
conflict /Users/yuu/.gitconfig exists
Overwrite /Users/yuu/.gitconfig? (enter "h" for help) [Ynaqdhm] #EnterもしくはY押下
ここまで実行すると以下のように~/
直下のドットファイルがシンボリックリンクになります。
~/
# ~/直下のファイルはシンボリックリンク
.gitconfig -> /Users/yuu/.homesick/repos/dotfiles/home/.gitconfig
.zshrc -> /Users/yuu/.homesick/repos/dotfiles/home/.zshrc
# homesickが管理するフォルダにドットファイルの実体がある
.homesick/
repos/
dotfiles/
home/
.gitconfig
.zshrc
Gitで管理する
最後にここまでの変更をプッシュすれば終わりです。
コミットメッセージやプッシュ方法は適宜変更して下さい
$ git add .
$ git commit -m "ドットファイルを追加"
$ git push origin master
2台目以降のMacの設定
2台目以降のMacはやる手順が減ります!
ここまでの手順が少し変わるだけなので簡単に書いていきます
homesickインストール
$ sudo gem install homesick
# DL出来た事を確認
$ homesick -v
1.1.6
フォルダの用意
repos/フォルダまで作成
$ mkdir -p ~/.homesick/repos && cd ~/.homesick/repos
repos/フォルダでリモートからclone
$ git clone git@github.com:<ユーザ名>/dotfiles.git
# ex: git clone git@github.com:yuki-takara/dotfiles.git
リモートから引っ張ってきたファイル群がある事を確認
$ ls -la ~/.homesick/repos/dotfiles/home
・・・
-rw-r--r-- 1 yuu staff 2082 12 23 15:15 .gitconfig
-rw-r--r-- 1 yuu staff 357 12 23 15:15 .zshrc
シンボリックリンクを貼る
ここでもしコンフリクトが起きる場合は考慮して下さい。
今までのドットファイルが消えて困る場合は、先にバックアップしておいて下さい。
$ homesick symlink dotfiles
conflict /Users/yuu/.zshrc exists
Overwrite /Users/yuu/.zshrc? (enter "h" for help) [Ynaqdhm]
・・・
様々なドットファイルが更新されているはずなので一度ターミナルを再起動。
ドットファイルが更新されている事を確認して終わりです!