読者です 読者をやめる 読者になる 読者になる

HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

修正時期が分からない修正を見つけるためのスクリプトサンプル

Subversion bash

Subversionで管理しているファイルを、どこかのタイミングである修正をしていて、キーワードは覚えているんだけど、いつ修正したのか思い出せない(この変数、いつ追加されたんだ?とか)、なんてこと、よくありますよね(ふつーはねーよ、そんなこと。コミットコメントを見れば大体分かるんだよ、ふつーは(以下自粛(謎)))‥
‥っと、気を取り直して、そんなとき、一つ一つ履歴を追っていたのではとてもじゃないが気が滅入るし時間も足りない。
そんなわけで、ざっくりとシェルスクリプトを書いてみた。

#! /bin/bash

# 調査したいファイル/ディレクトリへのパス
svn_repo=http://svn.example.com/repo/hoge/trunk/hoge/fuga/BoeBoe.java
# キーワード
keyword=someVariable

unset pre

for rev in $(svn log ${svn_repo} | grep '^r[0-9][0-9]* ' | awk '{print substr($1, 2);}')
do
    if [ "x${pre}" != "x" ]; then
        echo "${rev}<==>${pre}"
        svn diff -r ${rev}:${pre} ${svn_repo} | grep ${keyword}
    fi
    pre=${rev}
done

ざっとこんな感じ。
やってることはすごく単純で、対象のファイル/ディレクトリが関連したリビジョン番号を全部抜き出して、前のリビジョンとの差分を一つずつ出力しているだけ。
grep ${keyword}」の部分は好きなように抽出コマンドを書けばいいし、応用はいくらか考えられるかも。
まぁ、ふつーは、こんなものが役に立たない世の中が幸せなんですけどね(謎)。