目次
1. 初めに
GitHubのリポジトリページには言語統計(Languages)が表示されています。 自分のレポジトリを確認している際、表示されている割合に違和感を覚えたので少し調べてみました。 その結果どうやら、外部ライブラリや記事で紹介したツールの成果物も集計されているみたいでした。 今回はそれらを集計から除外する方法をまとめました。
2. 言語統計の提供元(github-linguist)
GitHubで言語統計を表示する機能は、RubyGemsのgithub-linguist
の機能の一部です。
github-linguist - RubyGems
の説明を翻訳すると以下のように書いてあるため、「言語のブレークダウングラフの生成」が担っていることがわかります。
私たちは、blob言語の検出、コードのハイライト、バイナリファイルの無視、差分での生成ファイルの抑制、 言語のブレークダウングラフの生成を行うためにGitHubではのライブラリを使っています。
3. ドキュメントの確認
Linguist - 動作を変更する方法 を確認するとドキュメントに解決策が記載されていました。 必要そうな箇所のみを和訳し、以下にまとめました。
3.1. 設定ファイル gitattributes
プロジェクトに.gitattributes
ファイルを追加し、下記概要の特殊な属性を使い、オーバーライドしたいファイルに対して、
.gitignore
のような標準的なgitのパスマッチャーを使用します。
このファイルは言語統計を確定するために使われ、構文の強調にも使われます。
3.1.1. 概要
Git属性 | 定義ファイル | ファイルでの効果 |
---|---|---|
linguist-detectable |
languages.yml |
言語の種類がdataやproseであっても統計に包含される |
linguist-language =name |
languages.yml |
指定された言語としてハイライトされ、分類される |
linguist-documentation |
documentation.yml |
ドキュメントとして統計から除外される |
linguist-generated |
generated.rb |
生成されたファイルとして統計からは除外され、diffでは隠される |
linguist-vendored |
vendor.yml |
ベンダから提供されたファイルとして統計から除外される |
3.1.2. ベンダから提供されたファイル
JavaScriptライブラリなど、自分が書いていないコードをリポジトリにコミットするのはよくあることですが、 これはプロジェクトの言語統計情報を肥大化させ、プロジェクトが別の言語としてラベル付けされる原因にもなります。
デフォルトでは、Linguist
はvendor.yml
で定義された全てのパスをvendored
として扱い、リポジトリの言語統計に含めません。
パスのベンダリングやベンダリング解除にはlinguist-vendored
属性を使用します。
.gitattributes
# フォルダ内のすべてのファイルにオーバーライドを適用する
special-vendored-path/* linguist-vendored
# 特定のファイルにオーバーライドを適用する
jquery.js -linguist-vendored
# フォルダ内のすべてのフォルダとファイルにオーバーライドを適用する
ano-dir/** linguist-vendored
4. 設定ファイルの作成
.gitattributes
ファイルを作成することにより、任意のファイルを集計から除外できることがわかりました。
実際に作成したファイルを以下に示します。
.gitattributes
# Excluded from stats
assets/lib/** linguist-vendored
assets_of_posts/** linguist-documentation
自分のリポジトリの構成上、外部ライブラリや記事添付ファイルは除外したいと思っていました。 その結果、上記の設定となりました。
5. 設定ファイルの適用結果
設定ファイル適用前
設定ファイル適用後
上記画像により言語統計から外部ライブラリや記事添付ファイルを除外できたことがわかります。
6. 最後に
.gitattributes
ファイルを作成し、指定したファイルに対して特殊な属性を設定することにより、
言語統計に包含できることや、言語統計から除外できることがわかりました。
今回は外部ライブラリや記事添付ファイルを除外する方法をまとめました。