古いRubyのコードのコメントを独自のRDoc形式からYARD形式に変換して、さらにその後にプログラムを変更したんですが、その後に差分を見ると大量のコメントの差分が表示されて、実際のコードの差分が何かわからなくなったりしたので、コメントを無視して差分を取る方法を調べてみました。
普通にgit diff
するとこんな感じ:
diff --git a/hoge.rb b/hoge.rb index 8fa6659..0561977 100644 --- a/hoge.rb +++ b/hoge.rb @@ -1,8 +1,8 @@ -# == ほげクラス +# ほげクラス class Hoge - # === ほげ - # +str+ 何か + # ほげ + # @param str [String] 何か def hoge(str) - 123 + 456 end end
プログラムとしての変更部分は1行だけなのですが、コメントの差分がたくさん出てきて見にくいです。 Git の attribute を使ってコメントの変更を無視するようにしてみます。参考: Git のカスタマイズ - Git の属性
まず引数で指定されたファイルのコメント行を削除して出力するコマンドを作成します:
#!/bin/sh sed -e '/^ *#/d' "$@"
git config
で上のコマンドを登録:
git config diff.ignore-comment.textconv /tmp/delete-comment
.gitattributes
ファイルにファイル名パターンと差分にignore-comment
を使用するように登録:
*.rb diff=ignore-comment
以上を設定した状態で差分を取ってみます:
diff --git a/hoge.rb b/hoge.rb index 8fa6659..0561977 100644 --- a/hoge.rb +++ b/hoge.rb @@ -1,5 +1,5 @@ class Hoge def hoge(str) - 123 + 456 end end
コメント行の差分が無視されました。パチパチ。🎉
一時的に確認するためだけに設定しただけなので、確認したら .gitattributes
を元に戻しておきます。
もっといい方法があるかもしれませんが、一応目的は達成できたので良しということで。