やりたいこと
- Git のコミット間の実行ステップ数を調べたい。
- 追加行をカウントしたい。
 - 削除行はカウントしたくない。
 - コメント行はカウントしたくない。
 
 
環境
- Windows 7 Professional 32 bit
 - Git BASH
 
カウントするコード
git diff: 修正箇所で最終的に残っている実行行をカウントする。awk: カウントする行を抽出する。^+: + で始まる行を残す。- 次の条件に当てはまる行を除外する。
 ^---a: — a で始まる行^+++ b: +++ b で始まる行^(+|-)$: + または – のみの行^(+|-)(¥t| )*(<%|¥/|¥*): + または – で始まり、0 個以上のタブまたはスペースがあり、続いて <% または / または * のある行
実際のコードは次のようになりました。
# ステップ数カウント
# 修正箇所で最終的に残っている実行行をカウントする。
# 差分を全てそのまま取得
git diff before after > step-all .txt
# カウントする行のみを抽出
awk  '/^+/ && (!/^---a/ && !/^+++ b/ && (!/^(+|-)(¥t| )*(<%|¥/|¥*)/) && !/^(+|-)$/) { print $0 }' step-all.txt > step-edited.txt
# ステップ数を出力
wc -l step-edited.txt
# ワンライナー
git diff before after  | awk '/^+/ && (!/^---a/ && !/^+++ b/ && (!/^(+|-)(¥t| )*(<%|¥/|¥*)/) && !/^(+|-)$/) { print $0 }' | wc -l
おわりに
参考ページです。ありがとうございます!
- Regexper
 - [svn 差分 ステップ数] で検索
 - [git 差分 ステップ数] で検索
 
以上です。
