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
も問題なく動くようになった。