#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, устарела. Спасибо за помощь!