git config --get(-all)

YAPC::Asiaでの@motemenのトークのスライドを見て、.git/*を見ないのはなるほどなと思った。愛用しているgit-releaseも前にちょっと書いたみたいにconfig --get(--all)を使って設定を拾うようにした。

config --get(-all)は、指定した設定が存在しない場合にエラー・コードが1で終了する。なのでオプショナルな設定(git-releaseではrelease.push)を読みたい場合は、エラー・コードを無視して続行する必要があったけど、それ以外は特に苦労することもなかった。config --get-allも一行にひとつというパースしやすい出力なので簡単だった。

使い方はまったく変わってない。


npmで-gで入れればすぐGitのユーザー定義サブコマンドとして使えるみたいにしたいんだけど、WindowsのGitではうまくさっくりと動かせない。理由はGitがユーザー定義サブコマンドを実行する時に、見つかった実行ファイルのパスの区切りをシェルが何かを考慮せずにバックスラッシュで常に送るようになっていること。

MSYS上でnpmでインストールしたユーザー定義サブコマンドを実行しようとすると、そこはMSYSがバックスラッシュを何となくどうにかしてくれるので、npmが作るシェルスクリプトを見つけることまではできる。だけどそのシェルスクリプトが行う`dirname "$0"`.を返してしまうので、最終的に実行される実体の実行ファイルが見つからなくなる。

どうにもならなそう。