Niedawno pracowałem nad projektem na github w JavaScript i C ++ i zauważyłem, że github oznaczył projekt jako C ++. Jeśli musisz wybrać jeden język, prawdopodobnie jest to prawidłowe oznaczenie, ponieważ kod C ++ jest kompilowany jako biblioteka JavaScript, ale to sprawiło, że zacząłem się zastanawiać ... w jaki sposób github wymyśla, w jakim języku oznaczyć każdy projekt?
github
github-linguist
Justin Ethier
źródło
źródło
Odpowiedzi:
Aktualizacja z kwietnia 2013 r., Autorstwauclearsandwich (zespół pomocy GitHub lub „supportocat”):
strona pomocy „ Moje repozytorium jest oznaczone jako niewłaściwy język ” wspomina o używaniu teraz biblioteki lingwistów do określenia języka pliku dla podświetlania składni i statystyk repozytorium. Lingwista wykluczy określone nazwy plików i ścieżki ze statystyk, z wyłączeniem niektórych plików i katalogów dostawców .
strona pomocy „ Dlaczego mój ulubiony język nie jest rozpoznawany? ” dodaje:
(Oryginalna odpowiedź, październik 2012)
Ten wątek na pomocy GitHub wyjaśnia to:
Ponieważ nie jest to w 100% dokładne, niektórzy dodali:
Uwaga: jak wspomina Mark Rushakoff w swojej odpowiedzi (za głosem), zgadywanie poprawiło się od tego czasu w projekcie lingwistycznym (open-source od czerwca 2011).
Możesz jednak zobaczyć, że nadal występują problemy: Problemy z językiem GitHub . Więcej informacji
znajdziesz tutaj :
Możesz dodać dyrektywy lingwistyczne w pliku .gitattributes .
źródło
Obecnie projekt lingwistyczny Githuba służy do określania statystyk językowych, jak opisano w tym poście na blogu Github (który ukazał się kilka miesięcy po zadaniu tego pytania).
źródło
Po pierwsze, wiedz, że możesz nadpisać język wykryty dla plików w twoim repozytorium za pomocą nadpisań Linguist .
Krótko mówiąc,
W jaki sposób Lingwista wykrywa języki?
Lingwista polega na następujących strategiach w kolejności i zwraca język, gdy tylko znajdzie idealne dopasowanie (strategia z zwróceniem jednego języka).
Makefile
).#!/bin/bash
hukiem zostanie sklasyfikowany jako Shell..h
) są udoskonalane przez kolejne strategie.^[^#]+:-
Dla Prologu ).Co to są pliki niezarejestrowane i pliki dokumentacji?
Lingwista uważa niektóre pliki za sprzedawane , co oznacza, że nie są one uwzględniane w statystykach językowych. Obejmują one biblioteki innych firm, takie jak jQuery i są zdefiniowane w
vendor.yml
pliku konfiguracyjnym. Możesz także sprzedawać lub nie sprzedawać pliki w swoim repozytorium, używając nadpisań Linguist .Podobnie, pliki dokumentacji są definiowane w programie
documentation.yml
i można je zmieniać za pomocą nadpisań Linguist .Jak są wykrywane wygenerowane pliki?
Lingwista opiera się na prostych zasadach wykrywania generowanych plików, wykorzystując zarówno ścieżki, jak i zawartość plików. Wygenerowane pliki nie są uwzględniane w statystykach językowych i nie są wyświetlane w różnicach na github.com.
A co z programowaniem i językami znaczników?
W Lingwistyce każdemu językowi nadaje się typ. Typy te można znaleźć w głównym pliku konfiguracyjnym
languages.yml
. Statystyki uwzględniają tylko języki programowania i języki znaczników.źródło
Po kilku majstrach z lingwistą zauważyłem to.
W przypadku plików z Shebang , Shebang jest brany pod uwagę przy określaniu języka, ale wydaje się być równo ważony względem innych żetonów . Wydaje się, że jest to duży błąd, ponieważ Shebang powinien definitywnie zdefiniować język pliku.
Może to powodować problemy z podświetlaniem.
źródło
Rozszerzenia plików to pierwsza rzecz, która przychodzi mi do głowy.
źródło
.js
i.cc
.