Gitとプロンプト変数PS1とbash_completionと
開発環境がまだMacになってきたので、プロンプトとかbash_completionとか、だんだん分かってきたbashの細かいとこをちゃんと設定してみた。
成果
見やすいプロンプト。特にgitの状態
myuser@host ~/dev/foo (bar-branch) $ git rebase -i HEAD^^ myuser@host ~/dev/foo (bar-branch|REBASE-i) $
ここじゃ再現できないけど色も付いてます。
gitコマンドの補完(gitに限った機能じゃないけど
$ git c[tab][tab] checkout cherry-pick clean commit credential-cache cherry citool clone config credential-store
設定方法
$ sudo port install bash-completion
まずMacPortsでbash-completionを入れる。
$ vim .profile #.bash_profile や .bashrcでも環境に合わせて if [ -f /opt/local/etc/bash_completion ]; then . /opt/local/etc/bash_completion fi
これが読み込まれた時点で、/opt/local/etc/bash_completion.d/*
にある色んなコマンドの補完が出来るようになる。MacPortsのport
とか。
$ sudo port install git-core +svn +bash_completion
variantsでbash_completionを指定する。svnはお好みで。
この時点で/opt/local/etc/bash_completion.d/git
が出来て、前述のbash_completion
が読み込んでくれるので、gitコマンドの補完が働きます。
gitのwork tree内でブランチ情報を出す
$ vim .profile #.bash_profile や .bashrcでも環境に合わせて # bash_completion.d/git if [ -f $BASH_COMPLETION_DIR/git ]; then export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w$(__git_ps1) \n\[\033[01;34m\]\$\[\033[00m\] ' else export PS1='\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n\$ ' fi
これを読み込むと、プロンプトが最初に書いた様な感じに変わります。この設定は、Cygwinのデフォルト+どこかで見つけたgitのブランチを表示する設定です。Cygwinに設定した時メモしなかったせいで、どこで見つけたのか分からなくなっちゃいました。
Cygwinに設定した際に参考にしたエントリーを見つけました。参考にというか、そっくりそのままだった。Gitブランチ名を__git_ps1でbashプロンプトに表示 - 130単位
すでにgit-coreが入ってる場合 #1
variantsを変えてインストールしようにも、MacPortsはインストール済みをインストールする事が出来ない。git-coreなんて消そうとすると依存関係で色々消えてしまうということで、現実的じゃなくめんどくさい。
$ sudo ln -s /opt/local/share/doc/git-core/contrib/completion/git-completion.bash /opt/local/etc/bash_completion.d/git
補完用スクリプト自体はあるので、シンボリックリンクを作れば+bash_completionを指定出来てなくても補完もブランチ情報も出来ます。
すでにgit-coreが入ってる場合 #2
$ sudo port deactivate curl @7.19.4_0
富士山は世界遺産
$ sudo port install curl +ssl
$ sudo port uninstall curl @7.19.4_0
deactivateすればvariants違いを入れることが可能らしい。自分はこれをやってないので、7.19.4_0をdeactivateして、+sslな7.19.4_0を入れた場合、アンインストールして両方消えたりしないのかなとか、ちょっと疑問はあるけど。
他にも依存関係とかおかしくならないのかとか、心配になる点はあるので、何かあってもなんとか出来るならやってみてもいいかも。