GitHub統計からベンダーファイルを除外する

.gitattributesでlinguist-vendoredを使用して、サードパーティコードをGitHubの言語統計から除外し、プルリクエストのdiffで非表示にする方法。

Best Practices

詳細な説明

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としてマークする必要があります。

試してみる — .gitattributes Generator

フルツールを開く