gitの情報をSQL文で参照できるGO製ライブラリ「gitql」



CLI上でGitのコミット情報などをSQL文で取得できるライブラリ「gitql」の紹介です。

バージョン管理として Gitは多くのプロジェクトで使われています。簡単な操作では特に問題はありませんが、少し複雑なことをしようとすると 多くのコマンドやオプションを覚える必要があります。

例えばSSHでログインしているサーバー上で、
" User1さんの2016年6月以降にコミットした、hashタグとメッセージの一覧情報を表示 " ... なんてあんまり考えたくないですよね?

そんなことが簡単にできるユーティリティツールが「gitql」で、上記のようなことが下のスニペットように書けます。

# User1さんの2016年6月以降にコミットした、hashタグとメッセージの一覧情報を表示
gitql "select hash, message from commits where author = 'User1' and date > '2016-06'"

* gitql

' gitql ' はUnix系のOSで動作する' git log 'をSQLクエリで参照出来るライブラリで、Goで書かれています。
( * 参照するのに特化したライブラリなのでpushやadd, commit等の操作には対応していません )

gitqlのインストール

gitqlはコマンドライン上で ' go get ' コマンドでパッケージを取得して、コンパイルします。
* GOとcmakeに依存しているので、事前に導入が必要です

# gitqlを'go get'で取得
go get -u -d github.com/cloudson/gitql
# path移動
cd $GOPATH/src/github.com/cloudson/gitql
# make
make
# コンパイル
sudo make install

## 下記を各環境によって、.bashrcや.zshrcなどに記述してください  ##

# Linuxの場合 
export LD_LIBRARY_PATH=$PWD/libgit2/install/lib
# Macの場合 *
export DYLD_LIBRARY_PATH="${GOPATH}/src/github.com/cloudson/gitql/libgit2/install/lib:${DYLD_LIBRARY_PATH}"

正しく導入されていると、' gitql 'コマンドが使えるようになります。

# gitql コマンドを叩くと下記のように表示されます
$ gitql
Gitql - Git query language
Usage: gitql [flags] [args]

Flags:
  -p string
    	The (optional) path to run gitql (default ".")
  -show-tables
    	Show all tables
  -v	The version of gitql
Arguments:
  sql: A query to run

 

gitqlの使い方

gitqlの操作は.gitファイルがあるプロジェクトフォルダ上で行います。

主に 'commits', 'remotes', 'tags', 'branches', 'Refs'を主テーブルとし、その5つから様々な情報が取得出来ます。

基本的な使い方は ' gitql " 参照する為のSQL文 "  'といった形になります。例えば、プロジェクトのコミット情報の一覧を表示する場合は下記のように。

# commit情報の一覧表示
gitql "select * from commits"

* 実際に自身のプロジェクト上でgitqlを使ってみました  

SQLと同じ使い勝手なので、表示させる項目にもフィルターをかけることが出来ます。

gitql "select hash, message, date from commits"

* commitからhash(コミットされたUUID), メッセージ, 日付のみを表示  

where句もサポートされており、コミッターで絞ることも出来るので、複数人でのプロジェクトでは役立ちそうです。

# where構文
gitql "select hash, message, date from commits where committer='CommiterName'"


date比較もサポートされており where句の' and '使えます。

# 日付比較 user1さんが2016年6月30日以降にコミットしたログを表示
gitql "select * from commits where committer='user1' and date > '2016-06-30'"


SQL文の' Like '相当に該当する構文も用意されており、" ' keyword ' in column "とういう形で使用します。

# Like文みたいなもの
# 文字'first'が含まれている箇所をmessageから検索
gitql "select * from commits where 'first' in message"


* サポートされているテーブル、カラム一覧

commits remotes tags branches Refs
author name name name name
author_email url full_name full_name full_name
committer push_url hash hash type
committer_email owner     hash
hash        
date        
message        
full_message        

 

Summary

以上がgitqlの紹介でした。

普段からデータベースを操作する人なら、直感的に操作できるので コマンドラインからのgitの操作に慣れていない人でも簡単に使うことができます。

ラーニングコストも数分ぐらいで済むレベルなので、サーバー管理者の人はプロジェクトサーバーにgitqlを入れておくと重宝しそうです。

GitHub : cloudson/gitql

 

この記事のカテゴリ
プログラミング

この記事のタグ