Недавно я работал над проектом github как на JavaScript, так и на C ++, и заметил, что github пометил проект как C ++. Если вам нужно выбрать один язык, это, вероятно, правильное обозначение, поскольку код C ++ скомпилирован как библиотека JavaScript, но это заставило меня задуматься ... как github выясняет, на каком языке тегировать каждый проект?
github
github-linguist
Джастин Этье
источник
источник
Ответы:
Обновление за апрель 2013 г., автор: nuclearsandwich (группа поддержки GitHub или «supportocat»):
на странице справки « Мой репозиторий отмечен как неправильный язык » упоминается использование библиотеки лингвистов для определения языка файла для выделения синтаксиса и статистики репо. Linguist исключит определенные имена файлов и пути из статистики, за исключением определенных файлов и каталогов поставщиков .
на странице справки « Почему не распознается мой любимый язык? » добавлено:
(Оригинальный ответ, октябрь 2012 г.)
Эта ветка поддержки GitHub объясняет это:
Поскольку это не на 100% точно, это заставило некоторых добавить:
Примечание: как отмечает Марк Рушаков в своем ответе (проголосовало за), с тех пор догадки улучшились благодаря проекту лингвиста (открытый исходный код с июня 2011 года).
Тем не менее, вы можете видеть, что проблемы по-прежнему остаются: Проблемы с GitHub Linguist .
Подробнее см. Здесь :
И вы можете добавить директивы лингвиста в файл .gitattributes .
источник
В настоящее время лингвистический проект Github - это то, что используется для определения языковой статистики, как описано в этом сообщении блога Github (которое появилось через несколько месяцев после того, как этот вопрос был первоначально задан).
источник
Во-первых, знайте, что вы можете переопределить язык, обнаруженный для файлов в вашем репозитории, используя переопределения Linguist .
Итак, в двух словах,
Как лингвист определяет языки?
Linguist полагается на следующие стратегии по порядку и возвращает язык, как только он находит идеальное соответствие (стратегия с возвращением одного языка).
Makefile
).#!/bin/bash
шебангом будет классифицирован как Shell..h
) улучшаются с помощью последующих стратегий.^[^#]+:-
для Пролога ).Что такое файлы без маркировки и файлы документации?
Linguist считает некоторые файлы предоставленными , то есть они не включаются в языковую статистику. К ним относятся сторонние библиотеки, такие как jQuery, и они определены в
vendor.yml
файле конфигурации. Вы также можете продавать или анонсировать файлы в своем репозитории, используя переопределения Linguist .Точно так же файлы документации определены
documentation.yml
и могут быть изменены с помощью переопределений Linguist. .Как обнаруживаются сгенерированные файлы?
Лингвист полагается на простые правила для обнаружения сгенерированных файлов, используя как пути, так и содержимое файлов. Созданные файлы не учитываются в языковой статистике и не отображаются в различиях на github.com.
А как насчет языков программирования и разметки?
В Linguist каждому языку дается тип. Эти типы могут быть найдены в главном файле конфигурации
languages.yml
. В статистике учитываются только языки программирования и разметки.источник
Поработав с лингвистом, я заметил это.
Для файлов с Shebang , Shebang учитывается при определении языка, но, кажется, равномерно взвешен по сравнению с другими токенами . Это кажется большой ошибкой, потому что Shebang должен окончательно определять язык файла.
Это может вызвать проблемы с выделением.
источник
Расширения файлов - это первое, что приходит мне в голову.
источник
.js
и.cc
файлы, и другие расширения.