カテゴリー
コンピューター

【Git BASH】追加したコメントを除くステップ数を数える方法

やりたいこと

  • 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 差分 ステップ数] で検索

以上です。