GitHub統計からベンダーファイルを除外する
.gitattributesでlinguist-vendoredを使用して、サードパーティコードをGitHubの言語統計から除外し、プルリクエストのdiffで非表示にする方法。
詳細な説明
Linguist-Vendored属性
GitHubはLinguistライブラリを使用してリポジトリの言語統計(リポジトリページのカラーバー)を計算します。サードパーティライブラリ、生成コード、またはベンダー依存関係がリポジトリに含まれていると、これらの統計が大幅に偏る可能性があります。
属性
# サードパーティライブラリ
vendor/** linguist-vendored
node_modules/** linguist-vendored
third_party/** linguist-vendored
external/** linguist-vendored
# ベンダーアセット
public/assets/lib/** linguist-vendored
static/vendor/** linguist-vendored
# パッケージマネージャー
bower_components/** linguist-vendored
linguist-vendoredの効果
| 機能 | なし | linguist-vendoredあり |
|---|---|---|
| 言語統計 | カウントされる | 除外される |
| PRのdiffビュー | 展開される | デフォルトで折りたたみ |
| コード検索 | インデックスされる | インデックスされる |
| Gitの動作 | 変更なし | 変更なし |
linguist-vendoredはGitHubのWebインターフェースにのみ影響することに注意してください。Gitの操作、行末、ターミナルでのdiffには影響しません。
実際の例
依存関係をvendor/にベンダリングするGoプロジェクトは、ベンダーライブラリのために90% JavaScriptとして表示される場合があります。vendor/** linguist-vendoredを追加すると、言語バーがプロジェクト自体のコードを正確に反映するように修正されます。
linguist-vendored vs .gitignore
| アプローチ | 効果 |
|---|---|
.gitignore |
ファイルがGitにまったく追跡されない |
linguist-vendored |
ファイルは追跡されるが統計から除外される |
リポジトリに含めるべきでないファイル(node_modules/など)には.gitignoreを使用してください。追跡する必要があるが自分のコードではないファイル(Goのvendor/ディレクトリなど)にはlinguist-vendoredを使用してください。
現在の統計を確認する
linguist設定をローカルで検証できます:
github-linguist --breakdown
これにより、GitHubがリポジトリの言語統計をどのように計算するかが表示されます。
ユースケース
サードパーティの依存関係をベンダリングするリポジトリ(Go vendor/、Ruby vendor/bundle、または手動で含めたJavaScriptライブラリ)は、GitHubで正確な言語統計を維持するために、それらのディレクトリをlinguist-vendoredとしてマークする必要があります。