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で開いた場合でもとても見やすいログになります。ぜひ使ってみて下さい。