git-completion is 何
gitのコマンドを色々とよしなに補完してくれる便利なやつだよ。
https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
背景
Vagrantで構築しているEC2インスタンス上で、いつの間にかgit-completionが動かなくなっていた。
git-completionを取得するときは↑のMasterリポジトリから取得しているんだけど、
どうもgit version 1.18から新たなオプションが追加されたらしく、Masterブランチのgit-completionにはそれが取り込まれているが、EC2インスタンスにyum経由で入るGitは< 1.18なので補完しようとタブキーを押すとエラーを吐くようになってしまった。
git rebまでタイピングして補完する癖が染み付いているので結構なストレスだったので問題解消することにした。
事前準備
依存ライブラリがない場合はインストール
sudo yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
やったこと
以下を実行すれば(多分)解決する。
単純にgitの最新版ソースからインストールしているだけ。
# yumで入っているgitでgit最新版を持ってくる
git clone git://git.kernel.org/pub/scm/git/git.git
# 持ってきた最新版のgitのディレクトリに入る
cd git
# git tag でタグ確認 → git checkout tagname でバージョンタグにチェックアウトしたほうが安全
# makeしてinstall
make prefix=/usr/local all
sudo make prefix=/usr/local install
確認
git --version
# => git version 2.18.0
これでgit-completionも問題なく動くようになった。