homesickを使ってdotfilesを複数のMacで利用出来るようにする

投稿日
homesickを使ってdotfilesを複数のMacで利用出来るようにする

.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]
・・・


様々なドットファイルが更新されているはずなので一度ターミナルを再起動。

ドットファイルが更新されている事を確認して終わりです!

プロフィール画像
Yuki Takara
都内でフリーランスのエンジニアをやってます。フロントとアプリ開発メインに幅広くやってます。