LoginSignup
20
21

More than 5 years have passed since last update.

homeshickを使ったdotfilesの管理

Last updated at Posted at 2014-03-29

homeshick

homesickとhomeshickの違いでも述べたように、homeshickはシェルスクリプトで書かれたdotfiles管理のためのアレです。

実行環境

  • Linux Mint 16 Cinnamon 64bit
  • Linux Kernel 3.11.0-12-generic
  • GNOME 端末 3.6.2

要は普通のシェルなら動きます。cshもtcshもfishもzshも一緒です。
とりあえずbash(zsh)の場合で話を進めます。

インストール

~ $ git clone git://github.com/andsens/homeshick.git 
~ $ printf '\nsource "$HOME/.homesick/repos/homeshick/homeshick.sh"' >> $HOME/.bashrc
~ $ printf '\nsource "$HOME/.homesick/repos/homeshick/completions/homeshick-completion.bash"' >> $HOME/.bashrc
~ $ source .bashrc 

1行目でhomeshickの本体をcloneし、2行目でhomeshickへのPATHを通し、3行目でtab補完のための設定をし、4行目で通したPATHの反映をします。3行目のはbashとzshで変わってきます。

~ $ printf '\nfpath=($HOME/.homesick/repos/homeshick/completions $fpath)' >> $HOME/.zshrc

zshならこう書きます。

ちなみに、ディレクトリ名が.homesickになっているのは、前述のhomesickとの互換性を意識してのことだろうと思われます。

dotfilesの管理

~ $ homeshick generate my_shick_castle
~ $ touch .vimrc
~ $ touch .gvimrc

homeshickでは(homesickでもそうですが)dotfilesの管理はcastleという単位で行われます。まずcastleをgenerateコマンドで作成します。補完が効くのでgeneくらいでtabを押せばだいぶ楽になると思います。
castleができたら、今までに書き溜めてきたdotfilesを早速管理します。(上ではまさに今作ってますけど)

~ $ homeshick track my_shick_castle .vimrc .gvimrc

trackコマンドに続けてcastleの名前、追加したいdotfilesを指定することで、dotfilesの本体はcastleの中に入り、ホームディレクトリにはそのシンボリックリンクが張られます。

~ $ homeshick cd my_shick_castle 
~/.homesick/repos/my_shick_castle $ ls -la
合計 16
drwxr-xr-x 4 unasuke unasuke 4096 3月 28 23:42 .
drwxr-xr-x 4 unasuke unasuke 4096 3月 28 23:42 ..
drwxr-xr-x 7 unasuke unasuke 4096 3月 28 23:53 .git
drwxr-xr-x 2 unasuke unasuke 4096 3月 28 23:53 home

では、どのように管理されているかを見てみます。(homeshickの)cdコマンドに続けてcastleの名前を入力すると、実際に管理されているcastleディレクトリの中に移動します。lsすればわかるように、gitで管理されています。
あとは、GitHubやbitbucketで作った空のリポジトリにpushしてしまいましょう。

dotfilesの取得

新しいマシンに今までのdotfilesを移したり、よく出来ているdotfilesをGitHubから持ってきたりしたいときには、cloneコマンドを使います。

~ $ homeshick clone robbyrussell/oh-my-zsh

この場合、oh-my-zshというcastleが新たに作成されます。既存のcastleがある場合、競合を避けてか、シンボリックリンクは張られません。外部のリポジトリも含めた管理をするなら、submoduleとして導入したほうがいいでしょう。

また、 ディレクトリに対してはシンボリックリンクを張ってくれない ので、自分でシンボリックリンクを作成する必要があります。

~ $ ln -s ~/.homesick/repos/my_shick_castle/home/.vim .vim

submoduleやディレクトリの管理

submoduleとして導入する場合や、ディレクトリの管理を行いたい場合、castleディレクトリ内のhomeディレクトリに実体を移し、手動でシンボリックリンクを張る必要があります。

これは、 もともとホームディレクトリにあった実体をcastleディレクトリに移しシンボリックリンクを張る ため、はじめからホームディレクトリに存在しないものについては何もしてくれないっぽいからです。

trackできないの」と思うかもしれませんが、trackコマンドではディレクトリを指定することができないため、例えばShougo/neobundle.vimを新たにtrackしたいと思っても、ファイルのパスをすべて列挙して指定しなければならず、不便です。

まとめ

  • homeshick generate castle_nameで管理する単位を作る

  • homeshick track castle_name file_nameで管理開始

  • homeshick clone username/reponameで持ってくる

  • ディレクトリへのシンボリックリンクは手動

参考

andsens/homeshick
Homeshickでdotfilesを管理することにした
Git Submodules: コアコンセプト、ワークフロー、コツ

20
21
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21