Gitのworking dirのrootを取得する

TL;DR: git rev-parse --show-toplevel

Cのプロジェクトで、language serverのために compile_commands.json を作るのだが、 ライブラリーのレポジトリだったりすると、makeするのはrootディレクトリではなくて、examples以下だったりする。

そこでmakeするけど、 compile_commands.json はgitのrootにおきたい、みたいな時に

bear -a -o ../../compile_commands.json make

みたいにしてたんだけど、ほかのプロジェクトでこの履歴をそのまま使うとこまることもある。 gitのrootをコマンドラインで取得できれば、これを共通のコマンドにできそう。

というわけで調べたら git rev-parse --show-toplevel で出来た。

さっきのコマンドは

bear -a -o (git rev-parse --show-toplevel)/compile_commands.json make

みたいにすればだいたいどこでもつかえるものに。[1]