編集したファイルのリストだけ作成したい
仕事でカスタマイズや改修を行った際に、編集したファイルのリストを作成することがたまにある*1。
だけど、普通に svn log コマンドを使っても簡単に整形しやすい形式ではないし、コミットログが入っていると処理のノイズになってしまうので「どうしたもんかー」と考えていたところ、 svn log には -q というオプションがある事を発見。
この -q を行うとコミットログを省略できる。
こんな感じ。
sugamasao% svn log -v -q -r 10:13 ------------------------------------------------------------------------ r10 | sugamasao | 2008-02-25 00:33:29 +0900 (月, 25 2 2008) 変更のあったパス: A /trunk/lang/js/kuma/index.html M /trunk/lang/js/kuma/kuma.user.js ------------------------------------------------------------------------ r11 | sugamasao | 2008-02-25 00:36:23 +0900 (月, 25 2 2008) 変更のあったパス: M /trunk/lang/js/kuma/index.html ------------------------------------------------------------------------ r12 | sugamasao | 2008-02-25 00:52:11 +0900 (月, 25 2 2008) 変更のあったパス: M /trunk/lang/js/kuma/index.html ------------------------------------------------------------------------ r13 | sugamasao | 2008-02-25 00:53:02 +0900 (月, 25 2 2008) 変更のあったパス: M /trunk/lang/js/nico2timeline/nico2timeline.user.js ------------------------------------------------------------------------
なので、以下のようなスクリプトで一覧を取得するようにしてみた。
リバートは一覧としては不要だと思うので grep -v で除外するようにしている。
sugamasao% svn log -v -q -r 10:13 | grep ^" " | sort | uniq | grep -v " R " A /trunk/lang/js/kuma/index.html M /trunk/lang/js/kuma/index.html M /trunk/lang/js/kuma/kuma.user.js M /trunk/lang/js/nico2timeline/nico2timeline.user.js
これでたいていは大丈夫だと思うけれど、上記の例のように、追加したファイルがあると二重になってしまう。・・・かと言ってA とか M の所を省略すると、削除したファイルの一覧が取得できない。
削除とか追加はさほど多くない(はず)だからとりあえずこれで妥協しておくか・・・。
*1:納品物とかの関係で