【GQL】gitファイルをSQLライクに探索してみよう

どもども、花粉症で目と鼻が大変なことになっている僕です。

今回は面白いツールを見つけたのでサクッと紹介するライトな記事です。

その名もGit Query languageです!略してGQL!

GQLとは

簡単に説明するとGQLはSQLに非常によく似た構文を持つクエリ言語を用いて.gitディレクトリ以下を参照することができるツールです。公式ページには以下のように説明されています。

GQL is a query language with a syntax very similar to SQL with a tiny engine to perform queries on .git files instance of database files, the engine executes the query on the fly without the need to create database files or convert .git files into any other format, note that all Keywords in GQL are case-insensitive similar to SQL.

https://amrdeveloper.github.io/GQL/

昨日はこれだけのシンプルなツールですが、使ってみると結構便利です!

セットアップ

rust製のツールなのでrust環境を準備しておく必要があります。rustupを利用する場合は下記を参照ください。
https://www.rust-lang.org/ja/tools/install

例:
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ rustc --version

すでに環境がある場合でもrustcのバージョンによってはGQLがインストールできない場合がありますので事前にバージョンアップしておいてください。

例:
$ rustup update
$ rustc --version

GQLはrustのパッケージマネージャーであるcargoを利用してインストールしています。上記手順で一緒にインストールされますのでcargo自体を追加する必要はありません。

$ cargo install gitql
$ gitql -v

バージョンが表示されれば準備完了です。

使ってみる

GQLを試すために適当なディレクトリを作成してください。

GQLコンソールは以下のコマンドで開きます。コンソールからコマンドを実行していきましょう。

$ git init
$ gitql
gql >

まずは.gitの内容を大まかに把握しましょう。

$ ls .git
config  HEAD  hooks  objects  refs

これをGQLで確認するには

gql > show tables
╭──────────╮
│ Tables   │
╞══════════╡
│ diffs    │
├╌╌╌╌╌╌╌╌╌╌┤
│ tags     │
├╌╌╌╌╌╌╌╌╌╌┤
│ commits  │
├╌╌╌╌╌╌╌╌╌╌┤
│ refs     │
├╌╌╌╌╌╌╌╌╌╌┤
│ branches │
╰──────────╯

しっかりテーブル形式で表示されます!
続いて適当にファイルを作成してcommitしてみましょう。

gql > select * from commits
<出力なし>

$ touch sample.txt
$ git add .
$ git commit -m"sampleファイルを作成"
gql > select * from commits
<commit情報がテーブル形式で出力>

諸々情報を含むので詳細は割愛しますが、しっかりcommit情報が出力されます!
他にも.git内の様々な情報を取得することが可能です。

まとめ

今回はGQLの紹介でした。

.gitにある情報を確認する際にはgitコマンドを利用することがほとんどだと思いますが、GQLを利用すればある程度SQLを書いた経験があれば直観的に操作できて便利です。

Gitを利用した開発を支える新たな選択肢として検討してみてはいかがでしょうか。

最後まで読んでいただきありがとうございます!

その他

Posted by CY