Help us understand the problem. What is going on with this article?

homeshickを使ったdotfilesの管理

More than 5 years have passed since last update.

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: コアコンセプト、ワークフロー、コツ

yu_suke1994
帰って寝たい
https://unasuke.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした