ありがとうございます、vcs_infoは便利ですよねー。[5e4db6]このへん。then...という具合に判定されている。rev-parseのリターンコードを見るのが良い、というようなことが書いてある。false;fiという感じで判定するのが良さそう。gitリポジトリ下でない場合は標準エラー出力にメッセージが出るので要らないなら捨てる。rev-parseコマンドは"--is-inside-work-tree"オプションで".gitディレクトリ内にいるか否か"の判定ができるので便利。statusとかでも良いのですよね。gitリポジトリ下か否かの判定は、主にsetup_git_directory_gently_1関数で行われている模様。ここで"正しい.gitディレクトリ"があるかどうかを見ているようだ。setup_git_directory()関数が呼ばれたときに内部でこの判定を行い、正しい.gitディレクトリが見つからなかったときにエラーを吐いて死ぬようになっているようだ。command群ではRUN_SETUPフラグがオプションに定義されているとコマンド本体に処理が渡る前にそれが呼ばれる。commandたちのうちRUN_SETUPが含まれているものはgitリポジトリ下じゃない場合にだいたいエラー吐いて死ぬはず。.gitなのでこのへんのコマンドも判定に使えることは使える、と思う。rev-parseはRUN_SETUPフラグは立っていなくて、処理の本体となるcmd_rev_parse内でsetup_git_directory()を呼んで判定を行っているようだ。command本体まで処理が届いているか否かはTRACEを見てみると分かる。