自動生成ファイルを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としてマークする必要があります。これは、生成されたコードがリポジトリの見かけ上の言語分布を支配する可能性のあるモノレポで特に有用です。

試してみる — .gitattributes Generator

フルツールを開く