デスクトップアプリを作ってて、デスクトップアプリ上で version を表示させたいということがありました。
version 自体は git でタグ付けしているので最新のタグを取得すれば良いはずだったのですが、今回のアプリは、semantic version 以外に integration test 用のタグなどいくつかのタグが切られている状況です。
このため、 git describe
で ver. 用のタグを取得することができませんでした (できないよね…?方法あれば教えてほしい…)
というわけで、どうしたものかと思ったのですが、結論としては
$ git tag -l 'v[0-9]*' --sort -v:refname | head -1
で、最新の semver が取得できる。
-l
は、必要なタグをフィルタする条件を記述することができて、 fnmatch の形式で指定ができる。上のコマンドだとかなり適当な条件にしているけど、semver をもっと厳密に記述することもできると思います。
今回のポイントは --sort
の方で、ここに v:refname
を渡すと、タグ名を semver としてソートしてくれるようになる。ただ、これでは semver の昇順になってしまうので、それを降順にするために先頭に -
を入れてます。