Githubにて、表示される言語情報を、自分で指定する方法

Githubでは、リポジトリ毎に『何の言語のプログラムか』という情報が表示される。
これは自動判定なため、表示されたい言語と違う言語になってしまう

別に言語名表示されるだけなら、無視してもいいかも知れないのだけど、Githubメニュー『Repositories』のプルダウン『Select language』にて、絞り込み表示が出来るので、個人的には正しく設定したいところ。

説明ドキュメントをUPしただの、本体とは直接関係ない参照ディレクトリの存在だの、色々であるが、つまるところ、原因は『関係のないファイルがあるから』につきる。

因みに、判定された比率の情報は、該当リポジトリのTOPページ『Code』タブにて遷移した先。
『99 commits 99 branch 99 packages』等など(99は仮の数値)書かれた下にある『色のついたバー』。
そこをポチっと押すと割合が表示される。
この判定内容を、変えていく方法ということ。

『.gitattributes』ファイルを作成する

リポジトリのルートディレクトリ直下に『.gitattributes』ファイルを作成する。
これはGithubの『PR(プル・リクエスト)』のdiff対象から外したりを指定するためのファイル。
そう、コレ、言語情報だけじゃなくて、プルリクにも影響があるんですねぇ。
これを使って作業していく。

下記に例を記載するものの、こちらには単純な例しか記載しない。あんまり必要あるとも思わないし…
詳しくやりたい人は、GitHubが言語認識に使っているライブラリ『github/linguist』の『Troubleshooting』『Overrides』を参照し、頑張ってください!

特定の言語のみ認識

絶対に『この言語しか対象にしない!』という場合に使う。

JavaScriptのみ対象の例。
『すべてのファイルを無視するが、.jsファイルは例外とする』という意味になる。

* linguist-vendored
*.js linguist-vendored=false

※正直『linguist-vendored』『linguist-detectable』『linguist-generated』の3つの差は、よく解らなかった。
 でも使うのには困りはしない。

ディレクトリ・ファイルを無視指定

上記とは逆に、特定のディレクトリやファイルを無視し、残ったファイルだけで判定させる方法もある。

『vendor』ディレクトリ以下・『docs』ディレクトリ以下は無視、他は対象とする例。

vendor/* linguist-vendored
docs/* linguist-documentation

『linguist-documentation』ドキュメント扱い

『linguist-documentation』は、単純に『ドキュメント扱い』になる。
つまり『言語統計からは除外されるだけ』で、特に気にすることなく指定出来る。

『linguist-vendored』フォルダ・ファイルをdiff判定対象から除外

『linguist-vendored』に入れてしまうと、GitHub上で『diffは閉じられる』
つまり差異判断をしなくなる。

『linguist-detectable』フォルダ・ファイルをdiff判定対象から除外

『linguist-vendore』とほぼ同じ。

『.js』は対象、『.html』『.xml』は対象外という設定の例。

*.js linguist-detectable=true 
*.html linguist-detectable=false 
*.xml linguist-detectable=false

『linguist-generated』フォルダ・ファイルをdiff判定対象から除外

『linguist-vendore』とほぼ同じ。

yapp/* linguist-generated

下記の形でもOK

yapp/* linguist-generated=true

指定した拡張子を別の言語扱いにする

いっそ他のファイルも、言語の認識を変えてしまうことで、言語比率を変えてしまう方法。

下記の場合は『.html』をJavaScriptとして判断させる。

*.html linguist-language=JavaScript

『linguist-language』言語の扱いを変える

『linguist-language』は、本来とは違う言語の扱いにする。
.htmlは全てJS扱いにするみたいな認識だけなので、diff対象なのは変わらない。

おまけ

書いておくといいかもというおまじないコード

改行コード指定

改行コードを指定しておく。

* text=auto

Gitによる改行コードを信頼している場合のみ、先頭に書いておくといい。

『.txt』ファイルを、Gitにコミットする際、自動的に『CRLF』に変換する例。

*.txt text eol=crlf

バイナリコード等、明示的に改行設定を除外する場合は

*.jpg -text

『export-ignore』アーカイブから除外

『git archive』コマンドでリポジトリをアーカイブ出来るらしい。
その対象から外す。

.gitattributes export-ignore

まとめ

ドキュメントは別ディレクトリ、説明ファイル・キャッシュ等自動作成データは対象外でいいのではないかな。

なので、個人的基本設定はこうしてみた。

* text=auto
docs/* linguist-documentation
*.md linguist-documentation
cache/* linguist-vendored
log/* linguist-vendored
vendor/* linguist-vendored
node_modules/* linguist-vendored
*.log linguist-detectable=false
.gitignore export-ignore
.gitattributes export-ignore

『.gitignore』と内容カブる部分も出てくるが、そっちで指定したものは書かなくても良い。
そもそもUPされていないはずなので。

『.gitignore』については『Git関連メモ』をみてください。

コメント

タイトルとURLをコピーしました