github-лингвист, включающий файлы с атрибутом лингвиста-поставщика в языковую статистику

#git #github-linguist

Вопрос:

У меня есть репозиторий github, в котором преобладает C , но есть много кода на C, созданного поставщиком (драйверы для микроконтроллера), который полностью сбрасывает языковую статистику. Я прочитал эту страницу и создал .gitattributes файл в своем репозитории, который должен пометить все эти файлы драйверов как linguist-vendored и не допускать их включения в статистику. Хотя git check-attr сообщает linguist-vendored , что атрибут установлен, средство github-linguist командной строки по — прежнему игнорирует это. Что я делаю не так?

 $ cat .gitattributes
STM32[[:space:]]Code/*/** linguist-vendored
STM32[[:space:]]Code/*/Core/Src/** -linguist-vendored
STM32[[:space:]]Code/*/Core/Inc/** -linguist-vendored

$ git add .gitattributes
$ git commit --amend --no-edit
[master 017861e] fix github language metrics
 Date: Sat Sep 25 16:09:00 2021 -0700
 1 file changed, 3 insertions( )
 create mode 100644 .gitattributes

$ git check-attr -a "STM32 Code/BLDC/Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal.c"
STM32 Code/BLDC/Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal.c: linguist-vendored: set

$ github-linguist --breakdown
94.75%  C
2.92%   C  
2.09%   Makefile
0.23%   Assembly
0.01%   Shell

...
C:
STM32 Code/BLDC/Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal.c
...
 

Я также попытался изменить .gitattributes файл на просто

 STM32[[:space:]]Code/** linguist-vendored
 

и он по-прежнему не игнорирует файлы внутри.

Комментарии:

1. Вы внесли изменения?

2. @pchaigno Да, я внес изменения в свой локальный репозиторий (используя git commit --amend --no-edit ), но еще не перенес их на GitHub.

Ответ №1:

Я подозреваю, что вы, возможно, используете старую версию Linguist и/или rugged (что и делает проверку атрибутов git); возможно, версии, поставляемые с вашей ОС, поскольку я не могу воспроизвести ваше поведение, используя последнюю версию, которую использует GitHub:

 $ gem install github-linguist
Fetching github-linguist-7.16.1.gem
Building native extensions. This could take a while...
Successfully installed github-linguist-7.16.1
1 gem installed
$ git init foo
Initialized empty Git repository in /Users/lildude/Downloads/trash/foo/.git/
$ mkdir -p "foo/STM32 Code/BLDC/Drivers/STM32F3xx_HAL_Driver/Src/"
$ echo "foo" > "foo/STM32 Code/BLDC/Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal.c"
$ cd foo
$ git add .
$ git commit -m 'Initial commit'
$ github-linguist . --breakdown
100.00% 4          C

C:
STM32 Code/BLDC/Drivers/STM32F3xx_HAL_Driver/Src/stm32f3xx_hal.c

$ echo "STM32[[:space:]]Code/*/** linguist-vendored" > .gitattributes
$ git add .gitattributes
$ git commit -m 'overwrite'
[main 15e0a4e] overwrite
 1 file changed, 1 insertion( )
 create mode 100644 .gitattributes
$ github-linguist . --breakdown


$
 

Комментарии:

1. В этом-то и была проблема! Я использовал Linguist (версия 7.7.0), установленный с менеджером apt пакетов, поставляемым с Ubuntu 20.04. После удаления этого пакета и переустановки с помощью Linguist (версия 7.16.1) gem он по-прежнему не работал даже при копировании и вставке точных команд , которые вы использовали для тестирования. Запуск gem install rugged (который получил надежную версию 1.2.0), затем переустановка Linguist устранила проблему (IDK, если была необходима переустановка Linguist). Итак, похоже, что версия rugged, поставляемая с Ubuntu 20.04, устарела. Спасибо за помощь!