Subversionのログを1行にまとめてログを見やすくする方法

Subversionのログを1行にまとめてログを見やすくする方法 Linux

Subversionのログを表示する時には「svn log」コマンドでログを表示しますが、複数行に渡るコメントがあると非常に見にくい場合があります。また1つのコミットを1行としてログを見たい場合に、複数行コメントがあるとログをEXCELで見たい場合等にとても不便です。さらに開発現場でログをレポートとして提供する場合には、1行にまとまっているログの方が好まれるでしょう。

そのような場合に、Subversionのログの中の複数行コメントを1行にまとめて表示してくれる方法があると便利です。ここでは複数行コメントを1行にまとめるスクリプトを紹介します。

“svn log”コマンドを実行すると複数行コメントのまま表示される

“svn log”コマンドを実行すると、複数行コメントはそのまま複数行に渡って表示されてしまいます。例えば次のように表示されてしまいます。このままでもコメントは見やすい場合もありますが、1行にまとめられた方が時系列を追いやすくなりますので、以降で1行にまとめる方法を見てみましょう。

------------------------------------------------------------------------
r2357 | xyz | 2022-07-03 06:45:57 +0000 (Wed, 03 Jul 2022) | 3 lines

Fixed a bug. Added data validation and check logic.
This needs to be reviewed.

------------------------------------------------------------------------
r2356 | abc | 2022-07-03 06:20:42 +0000 (Wed, 03 Jul 2022) | 5 lines

Something was wrong on database. Updated table definitions and data types.
We also updated Java source code for tables.
Updated comments in source code.

------------------------------------------------------------------------
r2355 | hoge | 2022-06-19 04:37:46 +0000 (Wed, 19 Jun 2022) | 2 lines

Updated a lot of problems.

------------------------------------------------------------------------
r2354 | foo | 2022-06-19 03:20:57 +0000 (Wed, 19 Jun 2022) | 3 lines

Updated Java source code.
Also, updated comments.

------------------------------------------------------------------------
r2353 | bar | 2022-06-19 02:42:18 +0000 (Wed, 19 Jun 2022) | 2 lines

Initial revision

“svn log”コマンドの出力結果を1行にまとめるスクリプト

“svn log”コマンドの出力結果を1行にまとめたい場合には、次のようなスクリプトを使うと1行にまとめることが出来ます。

下記のスクリプトを実行すると、「/tmp/svn_log_one_line_script.awk」というスクリプトが作成されます。

cat << "__SVN_LOG_SCRIPT__" > /tmp/svn_log_one_line_script.awk
#!/usr/bin/awk -f
#
# "csv log"コマンドの出力を1行に纏めて表示するスクリプトです。
#

# リビジョン番号から開始される行を変数に格納
/^r[0-9]+/ {
    rev=$1
    user=$3
    date=$5
    time=$6
    timezone=$7
    lines=$13
}

# リビジョン番号から開始されていない行を連結して変数に格納
! (/^r[0-9+]/ || /^-+$/ || /^$/) {
  comment = comment $0
}

# 変数に格納したデータを出力
/^-+$/ && rev {
   print rev " | " user " | " date " " time " " timezone " | " comment
   comment = ""
}
__SVN_LOG_SCRIPT__

次にこのスクリプトファイルに実行権限を与えておきましょう。

$ chmod 744 /tmp/svn_log_one_line_script.awk

次に”svn log”コマンドを実行し、その結果をパイプを使って先程作成した「/tmp/svn_log_one_line_script.awk」スクリプトに渡します。

$ svn log | /tmp/svn_log_one_line_script.awk

すると複数行に渡って表示されていたコメントが1行にまとめられ、非常に見やすくなります。下記画面は画面幅の都合で折り返されてしまっていますが、大きい画面では実際には1行で表示されます。

r2357 | xyz | 2022-07-03 06:45:57 +0000 (Wed, 03 Jul 2022) | Fixed a bug. Added data validation and check logic.This needs to be reviewed.
r2356 | abc | 2022-07-03 06:20:42 +0000 (Wed, 03 Jul 2022) | Something was wrong on database. Updated table definitions and data types.We also updated Java source code for tables.Updated comments in source code.
r2355 | hoge | 2022-06-19 04:37:46 +0000 (Wed, 19 Jun 2022) | Updated a lot of problems.
r2354 | foo | 2022-06-19 03:20:57 +0000 (Wed, 19 Jun 2022) | Updated Java source code.Also, updated comments.
r2353 | bar | 2022-06-19 02:42:18 +0000 (Wed, 19 Jun 2022) | Initial revision

まとめ

Subversionのログを見やすくするスクリプトを紹介しました。このスクリプトを使ってソースコードの履歴を一覧表のように見ることも出来るようになりますし、EXCELで開いた場合でもとても見やすいログになります。ぜひ使ってみて下さい。

タイトルとURLをコピーしました