1
1
お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【.gitattributes+liguist】githubリポジトリの言語統計情報をハックする

Posted at

github repositoryのプログラミング言語情報が認識されないことがあり、その際に.gitattributeとlinguistを使って解決できたので、ついでに他も色々調べてみました。

以下のようなリポジトリの言語統計情報はList repository languages APIによって各言語のコードバイト数に基づき算出されるらしい。
スクリーンショット 2024-07-09 23.56.39.png

github : https://github.com/github-linguist/linguist/tree/master

書き方の前提

.gitattributes
// 有効化
{path} linguist-{name}
// or
{path} linguist-{name}=true

// 無効化
{path} -linguist-{name}
// or
{path} linguist-{name}=false

{path}は.gitattributesファイルからの相対パスで対象のディレクトリやファイルを指定

linguist-language

.gitattribute
*.rb linguist-language=Ruby

*.es linguist-language=js
*.es linguist-language=JS

リポジトリに存在するファイルに対する言語情報を明示的にオーバーライドする
指定できるのはlanguages.ymlに定義されているもの。
(意図せず認識されない場合はこれで解決することも)

linguist-detectable

.gitattributes
# 有効化
*.sch linguist-detectable

*.hoge linguist-language=HogeLang linguist-detectable

# 無効化
tools/export_bom.py -linguist-detectable

デフォルトで認識されるのはlanguages.ymlで定義されている中のtypeがprograming or markupのものだけなので、設定を更新したい場合は上記のように指定する。
*.hoge linguist-language=HogeLang linguist-detectableのようにlinguist-languageと組み合わせてオリジナルの情報を加えることも可能。

linguist-documentation

.gitattributes
# 有効化
docs/* linguist-documentation

# 無効化
docs/formatter.rb -linguist-documentation

デフォルトでdocumentation.ymlに定義されているドキュメント用ディレクトリは言語統計から除外されているが、設定を更新したい場合は上記のように指定する。

linguist-vendored

.gitattributes
# 有効化
path/to/vender/* linguist-vendored

# 無効化
node_modules/* -linguist-vendored

jsライブラリなどの第三者から提供されたコードはデフォルトでvender.ymlに定義されており、言語統計から除外されているが、設定を更新したい場合は上記のように指定する。

linguist-generated

.gitattributes
*.gen.dart linguist-generated

*.min.js -linguist-generated

コンパイルなどで自動生成されたファイルはデフォルトでgenerated.rbで定義されており、言語統計かつdiffから除外されるが、設定を更新したい場合は上記のように指定する
diffが多すぎるけど.gitignoreに指定するのはなんか違う場合とかに使える

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1