静的解析ツールのCLIに食わせたかった
動作はmacOS Catalina、bashで確認
コミットするファイル一覧を出力する
git diff --cached --name-only --diff-filter=ACMR
- cachedオプションでステージしたファイルを対象にする
- pre-commitフックで使用できる
- name-onlyオプションでファイル名のみを出力する
- diff-filterオプションは結果に含めたい変更の種類に応じて変更
参考 https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203
動作
$ git add test.php temp/test2.php
$ git diff --cached --name-only --diff-filter=ACMR
temp/test2.php
test.php
使用例
- phpstan analyzeコマンドの引数にしたい場合
$ PATHS=$(git diff --cached --name-only --diff-filter=ACMR | tr '\n' ' ' 2>&1)
$ echo "phpstan analyze $PATHS --level max"
phpstan analyze temp/test2.php test.php --level max
ブランチで変更したファイル一覧を出力する
git diff --name-only master...$CURRENT_BRANCH
- master…$CURRENT_BRANCH間の.を3つにすることでブランチの変更ファイルのみを対象にしている
参考 https://devconnected.com/how-to-compare-two-git-branches/
動作
# --show-currentオプションはgit v2.22〜
$ CURRENT_BRANCH=$(git branch --show-current 2>&1)
$ git diff --name-only master...$CURRENT_BRANCH
test.php
使用例はコミットの場合と同様なので割愛