Не позволяйте этим файлам затмевать другие важные языки вашего проекта.

Если вы такой же пользователь Github, как и я, вы, вероятно, знаете этот небольшой изящный раздел в правой части вашего репозитория: Языки.

В этом разделе перечислены языки программирования, задействованные в проекте, а также проценты их использования: это дает общее представление о стеке и различных технологиях, с которыми работал разработчик.

Если вам интересно, как рассчитывается эта статистика, инженеры Github открыли библиотеку Ruby, которая выполняет эту работу под капотом: она называется лингвист.

Почему этот раздел вообще полезен?

Помимо предоставления вам разбивки по используемым языкам программирования, этот раздел языковой статистики предоставляет Github возможность индексировать ваш проект, делая его доступным для поиска с помощью функции поиска по языку.

Проблема с блокнотами Jupyter и языковой статистикой

Когда у вас есть несколько блокнотов в проекте Python, они учитываются при вычислении языковой статистики. Поскольку эти файлы имеют завышенное количество строк метаданных, они обычно появляются вверху, скрывая важные языки, задействованные в проекте.

Вот что произошло в одном из моих проектов: у меня была папка блокнотов как часть моей кодовой базы, и файлы в ней имело смысл помещать в Git, потому что они делились примерами использования библиотеки.

Когда Github собирал статистику, он дал эту нереалистичную разбивку только потому, что блокноты Jupyter — это не простые текстовые файлы, а огромные блоки метаданных.

Решение 💡

Я нашел быстрое решение этой проблемы после небольшого погружения в документацию лингвиста: просто добавьте папку блокнотов как linguist-vendored в файл .gitattributes.

По сути, добавьте эту строку в .gitattributes и зафиксируйте этот файл:

notebooks/** linguist-vendored

Таким образом, Github будет игнорировать файлы в папке notebooks при вычислении статистики (в основном это работает для файлов любого типа, которые вы хотите игнорировать).

После отправки кода языковая статистика обновляется, показывая Shell, Makefile и Dockerfile: три инструмента, которые я использую для написания сценариев, упаковки и развертывания моей библиотеки.

Вот и все! :)

Новичок в Medium? Вы можете подписаться за 5 долларов в месяц и разблокировать неограниченное количество статей на различные темы (технологии, дизайн, предпринимательство…). Вы можете поддержать меня, нажав на мою реферальную ссылку.