msysgit の git bash here の初回起動を高速化
最近 msysgit を使ってるんだけど、会社の PC だと何故か git bash here*1の初回起動時にえらく時間がかかっていた。
一回 git bash here してからはずっと開きっぱなしなうえ、間違って消してしまっても 2 回目以降は基本的にはすぐに立ち上がったので放置していた・・・
んだけど、さすがに 1 分以上待たされるのは精神衛生上好ましくないので、ちょっと原因を探ってみた。
バージョンは 1.6.4-preview20090730 で、それ以外がどうかは不明。
原因は、git のインストールフォルダにある etc/git-completion.bash の中の __git_all_commands 関数で使われている、git help -a の呼出しにあった。
このコマンド、今これを書いている PC で実行するとすぐ終るんだけど、会社のノート PC で実行するとえらい時間がかかる。それこそ 1 分くらいかかる・・・
ちなみに、__git_all_commands 関数はこんな関数。
__git_all_commands () { if [ -n "${__git_all_commandlist-}" ]; then echo "$__git_all_commandlist" return fi local i IFS=" "$'\n' for i in $(git help -a|egrep '^ ') do case $i in *--*) : helper pattern;; *) echo $i;; esac done }
ってことでこいつをどうにかすればいいわけだけど・・・
ソースを弄ってどうのこうのするのはだるいので、その場しのぎの解決策で・・・
$ __git_all_commands | sed 's/^/echo /' > git-all-commands
そして git-all-commands をエディタで開いて全選択、その後・・・
__git_all_commands () { echo add # 略 echo rebase }
貼り付けw
これはひどい・・・
でもこれで 1 分以上待たされてたのに、10 秒程度になったのでとりあえず満足。
ちなみに、Vista とかだと clip コマンドがあるので、git-all-commands なんてファイル作らずに直接クリップボードに流し込める。
$ __git_all_commands | sed 's/^/echo /' | clip
便利。