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関連メモ』をみてください。
コメント