概要
この記事はLinuxやOS Xで利用する環境設定ファイルをGitHubで管理する方法です。
さまざまなプラグインもgit submodule
コマンドで外部参照リポジトリとして管理します。
これを行なっておけば、オンライン環境下ならばどこでもいつでも同じような環境が手に入ります。
シンボリックリンク貼るの大変。。。という解決策として、homeshickを利用します。
はじめに
Githubにdotfilesリポジトリを作成、各種環境設定ファイルを登録している方も多いと思います。
「でもプラグインとか他人のリポジトリのファイルを自分のリポジトリにコピペするのは気持ち悪いし、ライセンス的にも怖い」って思っている方、正しいです。
そしてGitはそれを解決できます。ドットファイル管理を行なっていて、プラグイン管理について知りたいだけの方は、次のQiita記事を見ていただければ十分です。
dotfiles (設定ファイル)の管理に git submodule を使う
http://qiita.com/sonots/items/adae6cda0bb7a05f8905
ドットファイル?
UNIXやMacなどのOS環境では$HOME
以下にドットから始まるファイルを置くことでユーザー独自の環境設定が出来ます。
黒い画面のくせにカラフルな人、Vimなのに関数ジャンプしている人は他人に見えない隠しファイルでズルしているのですね()
homeshick?
homeshickはシェルスクリプトベースで動く自動でリポジトリ内の設定ファイルのシンボリックリンクを$HOME
に貼ってくれるスクリプトです。
homesickというほぼ同機能のスクリプトも存在するのですがRubyベースなので、私は準備が少なくてよいhomeshick使っています。
homeshickの準備
homeshick自体は4コマンドほどで準備出来ます。
$git clone git://github.com/andsens/homeshick.git ~/.homesick/repos/homeshick
$printf '\nsource "$HOME/.homesick/repos/homeshick/homeshick.sh"' >> $HOME/.bashrc
$printf '\nsource "$HOME/.homesick/repos/homeshick/completions/homeshick-completion.bash"' >> $HOME/.bashrc
$source ~/.bashrc
ディレクトリ名が.homesick
なのは、homesickとhomeshickがクローン関係であり、homesickの方が先輩ということですね。
zshなど利用している方は、当然.bashrc
を.zshrc
などに置き換えてください。
dotfilesリポジトリを作る!
めんどくさいことはしたくないので、リポジトリはWeb GUIで作っておきます。(๑╹ڡ╹๑)
ここで大事なことは dotfilesというリポジトリ名で作ること。
制約ができるわけではありませんが、別の名前にするとたぶんあとで後悔します。。。
作ったdotfilesリポジトリをcloneしてきます。
homeshickコマンドを使えばすぐに移動できます。
また、homeshickは$REPO_HOME/home
以下のファイルのシンボリックリンクを作成するため、ディレクトリを作成しておきます。
$git clone https://github.com/budougumi0617/dotfiles.git ~/.homesick/repos/dotfiles
$homechick cd dotfiles
$mkdir home
dotfilesリポジトリ内にドットファイルを入れる
今まで設定した環境設定ファイルを$REPO_HOME/home
に移動しておきます。
$cp ~/.vimrc ~/.homesick/repos/dotfiles/home/
$cp ~/.zshrc ~/.homesick/repos/dotfiles/home/
dotfilesリポジトリ内にプラグインのリポジトリを登録する
git submodule
コマンドで自分のリポジトリから他のリポジトリに存在するプラグインに対してリンクを貼っていきます。
$git submodule add https://github.com/Shougo/unite.vim.git ~/.homesick/repos/dotfiles/home/.vim/bundle/unite.vim
$git submodule add https://github.com/Shougo/neobundle.vim ~/.homesick/repos/dotfiles/home/.vim/bundle/neobundle.vim
git submodule add https://github.com/robbyrussell/oh-my-zsh.git ~/.homesick/repos/dotfiles/home/.oh-my-zh
dotfilesリポジトリ内にプラグインのリポジトリを取り込む
上記だけだと実体が無いので、以下のようにして外部リポジトリからファイルを取得します。
$homeshick cd dotfiles
$git submodule init
$git submodule update
homeshickでシンボリックリンクを貼る!
これで準備が出来ました。homecshick symlink dotfiles
コマンドでシンボリックリンクが$HOME
以下に作成されていきます。既に環境設定ファイルを作成していた場合は上書きで。
他のOS環境で作成したdotfilesリポジトリを用いる
一度作ればあとは簡単です!と言いつつけっこーコマンド多いですね。
当然、vim上で:NeoBundleInstall
コマンドを行ったり、zsh
などへのシェルの変換も別途行う必要があります。
しかしめんどくさいのは最初だけ!
$git clone git://github.com/andsens/homeshick.git ~/.homesick/repos/
$printf '\nsource "$HOME/.homesick/repos/homeshick/homeshick.sh"' >> $HOME/.bashrc
$printf '\nsource "$HOME/.homesick/repos/homeshick/completions/homeshick-completion.bash"' >> $HOME/.bashrc
$source ~/.bashrc
$git clone https://github.com/budougumi0617/dotfiles.git ~/.homesick/repos/
$homeshick cd dotfiles
$git submodule init
$git submodule update
$homeshick symlink dotfiles
まとめ
最近は簡単に仮想環境を作れたり複数環境で作業することが多いので、「VM上でちょっと追記した.vimrc
をメイン環境でも使いたい!」と思うときなどかなりはかどります。
- 環境設定ファイルをGithubで共有すると共有が出来て便利
- homeshickを使えば簡単にリポジトリ内の環境設定ファイルのシンボリックリンクを
$HOME
に貼れる -
git submodule
コマンドで配布されているプラグインの管理も可能
ただしこれだけは注意してください。
- 社内プロキシ設定情報などを環境設定に書いているファイルは注意!
とくにGitHubはファイル自体を削除してもログで確認できますので、リポジトリに歴史を変える必要ができますよ。
.gitconfig
などが該当します。ただ以下のような抜け道もあります。
dotfilsをGitHub管理したいけど.gitconfigは社内proxy情報が…ってときは!
http://qiita.com/budougumi0617/items/bc04364464488802f54e
参考文献
今回は以下の内容を参考にさせていただきました!
Homeshickでdotfilesを管理することにした
http://befool.co.jp/blog/jiska/homeshick-git-dotfile-synchronizer/
dotfiles (設定ファイル)の管理に git submodule を使う
http://qiita.com/sonots/items/adae6cda0bb7a05f8905
homeshickコマンドの詳細は以下で。
https://github.com/andsens/homeshick/wiki/Commands