.gitattributes をもっと活用して GitHub 上での開発体験を向上させよう
はじめに
【全部俺】 Web フロントエンドエンジニアのメモ Advent Calendar 2022 15 日目の記事です。
.gitattributes を活用しプルリクエストレビューの負荷を軽減して、開発体験を高めた記録です。
背景
プルリクエストの差分を確認する際、パッケージマネージャーのロックファイルや自動生成ファイル (CodeGen) が差分となって出てくることがあります。
自動生成ファイルは人が読むものではないため、レビューにおいて邪魔に感じてしまいレビュー負荷が増加してしまうことがあります。
また、実際よりも差分が大きく見えてしまうことで、レビュワーがレビューを後回しにしてしまうことで、リリースの速度の低下にも繋がっていました。
そこで、 .gitattributes を適切に設定してみることにしました。
.gitattributes とは
もともと Git で .gitattributes の設定が存在します。下記ではツールを利用してバイナリ差分を見やすくする方法について解説されています。
Git - Git の属性
https://git-scm.com/book/ja/v2/Git-%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA-Git-%E3%81%AE%E5%B1%9E%E6%80%A7
これに加え、Github では linguist-generated というオリジナルの属性が用意されています。
変更したファイルの GitHub での表示方法をカスタマイズする - GitHub Docs
https://docs.github.com/ja/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github
使用例
linguist-generated を指定すると、該当のファイルは差分としてデフォルト折りたたまれるようになり、差分の行数としてカウントされなくなります。
yarn.lock linguist-generated=true

ちなみにドキュメントを見ると他にもいくつかの属性があり、GitHub 上に表示される言語統計情報などをカスタマイズできます。
linguist/overrides.md at master · github/linguist
https://github.com/github/linguist/blob/master/docs/overrides.md
- linguist-detectable
- linguist-documentation
- linguist-generated
- linguist-language
- linguist-vendored
まとめ
.gitattributes を活用し、ロックファイルや自動生成ファイルの差分を折りたたむように設定してみました。