torutkのブログ

ソフトウェア・エンジニアのブログ

Githubのリポジトリの主要言語の認識を変更する

JJUG CCCでJavaFXで地図を描く話をしてきたことについてあれこれ #jjug_ccc #ccc_e2 - torutkの日記に、セッション資料とサンプルコードのリポジトリURLを書き忘れていたので追記しました。その際、Githubリポジトリ一覧に表示されるリポジトリの主要言語がJavaではなくHTMLと認識されているのに気づきました。

Githubには、リポジトリの中のファイルが何で書かれているかを解析して一番多い言語をそのリポジトリの主要言語として表示するような機能があります(今頃気づきました)。

で、JavaFXで地図表示をするサンプルコードなのに、なぜかHTMLと認識され不思議に思いましたが、HTMLと認識したファイルを調べると、サンプルコードで使用している地図データの説明用HTMLファイルと判明しました。この説明用HTMLファイルサイズは20KBなのでJavaのソースファイルより大きいです。
この地図データは、Natural Earth から取得した海岸線データです。

リポジトリの言語をJavaとして認識する方法を探したところ、次に変更方法の記述が見つかりました。
https://github.com/github/linguist#overrides

  • ベンダーパスという事前定義されたパターンのディレクトリにファイルを置く
  • .gitattributes ファイルを作成し、その中に認識されたくないファイルやディレクトリのパターンをベンダーパスとして定義する

ベンダーパスというのは、リポジトリに外部から取り込んだデータを置く場合、それを開発しているデータと区別するために設けた概念のようです。今回の地図データは、まさに外部から取り込んだデータなのでベンダーパスとするのがGithubの想定に合っています。

ただ、既に、mapディレクトリという場所の下に地図データを置いているので、2つ目の.gitattributesにこのmapディレクトリをベンダーパスとして認識するよう定義する方法を用いました。

map/* linguist-vendored

これをリポジトリのトップディレクトリに作成し、コミット・プッシュしたところ、リポジトリの主要言語がJavaと認識されました。