git 上で削除したファイルがコード内で利用されているかどうか調べるためのワンライナー
削除したファイルが 1 つ 2 つだったら使われているかどうかを調べるために素朴に grep すればいいんだけど、大量にあるときつい。ので手軽に調べられるワンライナーを書いてみた。
git log <commit_hash>...<commit_hash> --diff-filter=D --name-only --oneline | grep -Eo '[^/]+$' | xargs -I arg git grep arg
細かく解説すると以下のような動き
git log <commit_hash>...<commit_hash> --diff-filter=D --name-only --oneline
でコミット間で削除されたファイルの一覧を出す- ↑だとフルパスが出てくるけど、コード内で相対パスで参照されることがあるので
grep -Eo '[^/]+$'
でファイル名のみを取り出す xargs -I arg git grep arg
でファイル名ごとに git grep
git grep しまくるのでファイル数が増えるとかかる時間が指数関数的に増加していくけど、手元で試したかぎりは300ファイルくらいならまぁめちゃくちゃ時間がかかるという感じでもなかった。(コードの規模にもよるけど…)