GitHubによる主要認識言語を切り替える


ありがたいことに、GitHubの無料ユーザーでも、プライベートリポジトリを無制限に使えるようになった。

ということでGitのImport機能を使って、Bitbucketから順次お引越し。
その中で幾つかGit側でリポジトリの主要言語が誤って認識されたので、訂正方法をメモ。

と言っても、GitHubが言語認識に用いているライブラリ(github/linguist)のTroubleshooting、Overridesを参照しただけだけれども。

前提

  • リポジトリ内部の統計バーをクリックすると、GitHub側が認識している言語統計を見ることができる(知らなかった)
  • 言語認識がうまくいかない場合は幾つか要因が考えられる
    • Linguistがその言語自体を扱っていない
    • 依存するファイル・ライブラリが直接置かれている
    • 拡張子がlanguages.ymlと紐づいていない
    • 本来除外されるはずのドキュメントが統計対象となっている

依存するHTMLファイルが大量に存在するので、JavaScriptではなくHTMLが主要言語だと判定されてしまっている。

解決策

Vim/Emacs modelineファイルを使う方法もあるようだが、.gitattributesファイルの作成のほうで解決する。(主要なのはどちらだろう)
そして下記を参考に記述。.gitignoreみたいなものか。

*.ext linguist-language=Java  # ".ext"の拡張子をJavaとして検出

folder/* linguist-vendored  # vendored codeとして認識
file.js linguist-vendored=false  # vendored codeから除外

folder/* linguist-documentation  # documentationとして認識
file.rb linguist-documentation=false  # documentationから除外

documentation扱いとすることで言語統計からは除外される。
またvendored code扱いとすることで統計から除外され、さらにGitHubのdiffからも対象外となる。

ということで無事JavaScript:100%となった。