自動生成ファイルをlinguist-generatedでマークする
自動生成ファイルをlinguist-generatedとしてマークし、GitHubのプルリクエストレビューと言語統計から非表示にするための.gitattributesの設定方法。
Best Practices
詳細な説明
Linguist-Generated属性
自動生成ファイル(コンパイル済みprotobufコード、GraphQL型、ORMマイグレーション、ミニファイされたバンドル)はリポジトリにコミットされますが、プルリクエストのレビューを乱雑にしたり、言語統計を偏らせたりすべきではありません。linguist-generated属性は両方の懸念に対処します。
属性
# ビルド出力
dist/** linguist-generated
build/** linguist-generated
out/** linguist-generated
# 生成された型
*.generated.ts linguist-generated
*.generated.go linguist-generated
*.pb.go linguist-generated
*.pb.ts linguist-generated
*_generated.py linguist-generated
# GraphQLコード生成
src/__generated__/** linguist-generated
*.graphql.ts linguist-generated
# ORM生成
prisma/generated/** linguist-generated
*.dbml.go linguist-generated
# ミニファイ
*.min.js linguist-generated
*.min.css linguist-generated
*.bundle.js linguist-generated
GitHubへの影響
| 機能 | デフォルト | linguist-generatedあり |
|---|---|---|
| 言語統計 | カウントされる | 除外される |
| PRのdiffビュー | 展開される | 「generated」ラベル付きで折りたたみ |
| コード検索 | インデックスされる | 検索結果から除外 |
| コードレビュー | レビュー可能 | デフォルトで非表示 |
linguist-generated vs -diff
これらは異なるスコープを持つ補完的な属性です:
| 属性 | スコープ | 効果 |
|---|---|---|
linguist-generated |
GitHub Web UI | PRで折りたたみ、統計から除外 |
-diff |
Git CLI | git diff出力を抑制 |
最良のエクスペリエンスのために、両方を組み合わせてください:
*.pb.go text -diff linguist-generated
Protobuf / gRPCの例
GoとTypeScriptプロジェクトで生成されたprotobufコードをコミットする一般的なパターン:
# 生成されたprotobuf(Go)
*.pb.go text -diff linguist-generated
*_grpc.pb.go text -diff linguist-generated
# 生成されたprotobuf(TypeScript)
*.pb.ts text -diff linguist-generated
*_grpc_pb.ts text -diff linguist-generated
これにより、生成されたコードをバージョン管理に保持しながら(再現可能なビルドのため)、レビューと統計から非表示にできます。
ユースケース
自動生成コード(protobuf、GraphQLコード生成、ORMマイグレーション、ビルドアーティファクト)をコミットするプロジェクトは、それらのファイルをlinguist-generatedとしてマークする必要があります。これは、生成されたコードがリポジトリの見かけ上の言語分布を支配する可能性のあるモノレポで特に有用です。