Github zmienia repozytorium na niewłaściwy język

106

Wiem, że to nic wielkiego, ale podoba mi się, że mój Github jest zróżnicowany językowo. Napisałem projekt w języku Swift, a kiedy go zatwierdzam, mówi, że jest w celu C.

Myślę, że może to być spowodowane tym, że struktury Parse są napisane w celu C i wykrywa to, ale czy istnieje sposób na zmianę języka wyświetlania na głównej stronie repozytorium?

Echizzle
źródło

Odpowiedzi:

126

Odkryłem, że najprostszą rzeczą jest utworzenie pliku o nazwie .gitattributesw folderze głównym mojego repozytorium i przekazanie mu następującej zawartości:

* linguist-vendored
*.js linguist-vendored=false

Ten przykład mówi github / linguist, aby ignorował wszystkie pliki, a następnie po prostu spojrzał na pliki .js. Mój projekt https://github.com/aim12340/jQuery-Before-Ready został wymieniony jako HTML, ponieważ przykładowe pliki HTML były większe niż pliki JS. Ten plik rozwiązuje problem i teraz jest wymieniony jako JavaScript

EamonnM
źródło
5
po prostu utwórz nowy plik .gitattributes w folderze głównym repozytorium z zawartością powyżej, natychmiastowa naprawa!
Gob00st
Najdoskonalszy. Miałem projekt Scala, który został oznaczony jako projekt CSS.
Niedobrze
5
Może to fikcyjny komentarz, ale jeśli zastanawiasz się, co dokładnie zrobić, 1. Postępuj zgodnie ze wskazówkami @ Gob00st w jego komentarzu i 2. Zastąp „.js” rozszerzeniem swoich głównych plików językowych.
Elisabeth
Wielkie dzięki. Przeszukałem wiele artykułów, ale żaden z nich nie zadziałał dla mnie oprócz tego.
Modo
Miałem podobny problem z moim podstawowym projektem ASP.NET. Github pomyślał, że to repozytorium javascript ze względu na liczbę plików js w folderze www. Dodanie pliku .gitattributes z [webprojectfolder] / wwwroot / * linguist-vendored naprawiło to. Dziękuję Ci.
Mustafa
63

Jak wspomniano na stronie pomocy GitHub

GitHub korzysta z biblioteki Linguist typu open source do określania języków plików na potrzeby podświetlania składni i statystyk repozytorium.
Niektóre pliki są trudne do zidentyfikowania, a czasami projekty zawierają więcej plików bibliotek i plików dostawców niż ich kod podstawowy.

Więc musisz to sprawdzić github/linguist#troubleshooting, aby naprawić tę sytuację.

Wartości procentowe są obliczane na podstawie bajtów kodu dla każdego języka zgodnie z raportem API List Languages .
Jeśli pasek zgłasza język, którego się nie spodziewasz:

  • Kliknij nazwę języka na pasku statystyk, aby wyświetlić listę plików zidentyfikowanych jako ten język.
  • Jeśli widzisz pliki, których nie zapisałeś , rozważ przeniesienie plików do jednej ze ścieżek dla kodu dostawcy lub skorzystaj z funkcji ręcznego nadpisywania, aby je zignorować.
  • Jeśli pliki są błędnie klasyfikowane, wyszukaj otwarte problemy, aby sprawdzić, czy ktoś inny już go zgłosił. Pomocne są wszelkie informacje, które możesz dodać, zwłaszcza linki do repozytoriów publicznych.
  • Jeśli nie ma zgłoszonych problemów związanych z tą błędną klasyfikacją, otwórz problem i dołącz link do repozytorium lub próbki kodu, który jest nieprawidłowo klasyfikowany.

Aktualizacja luty 2017 (rok później):

Artykuł „ Jak zmienić język repozytorium w GitHubieautorstwa Moniki Powell

Po zbadaniu, jak rozwiązać problem z błędną klasyfikacją języka projektów w serwisie GitHub, odkryłem, że rozwiązanie jest tak proste, jak wskazanie GitHubowi, które pliki mają być ignorowane.

Chociaż nadal chcesz zatwierdzić te pliki do GitHub i dlatego nie możesz użyć a .gitignore , możesz powiedzieć lingwistowi GitHub, które pliki zignorować w .gitattributespliku

static/* linguist-vendored

Ten jednowierszowy plik powiedział GitHubowi, aby ignorował wszystkie moje pliki w moim static/folderze, w którym są przechowywane pliki CSS i inne zasoby dla aplikacji Flask

Sekcja „Używanie .gitattributes ilustruje sposób zaznaczania niewłaściwych języków.
Na przykład:

Sprawdzanie kodu, którego nie napisałeś, takiego jak biblioteki JavaScript, w repozytorium git jest powszechną praktyką, ale często zawyża to statystyki językowe projektu, a nawet może spowodować, że projekt zostanie oznaczony jako inny język .
Domyślnie Linguist traktuje wszystkie ścieżki zdefiniowane w programie vendor.ymljako sprzedane i dlatego nie uwzględnia ich w statystykach językowych repozytorium.

Użyj atrybutu dostawcy lingwisty do ścieżek dostawcy lub nie-dostawcy.

$ cat .gitattributes
special-vendored-path/* linguist-vendored
jquery.js linguist-vendored=false
VonC
źródło
Udało mi się, chociaż teraz zastanawiam się, jak to może nadal działać na GitHub, jeśli .gitattribute znajduje się w .gitignore, ponieważ GitHub oczywiście potrzebuje pliku, ale tak naprawdę nie chcę go już w moim repozytorium…
Dave Everitt
1
.gitattributes, a nie .gitattribute
Derzu
nie wiedział, że .gitattributes istnieje. Dzięki +1
scipsycho
31

Aby to uprościć, podzielę się moimi krokami:

  1. Zmień katalog na folder główny projektu;

  2. Utwórz plik o nazwie .gitattributes, używając dowolnych narzędzi:

    dotknij .gitattributes

  3. Edytuj plik, postępując zgodnie z instrukcjami biblioteki Linguist, aby powiedzieć Githubowi, jak to zrobić, na przykład:

    vi .gitattributes

    Skorzystaj z usług dostawcy lingwistów, aby umożliwić Githubowi „pominięcie” wykrywania tego folderu i podfolderów:

    src/main/resources/static/* linguist-vendored

    Użyj atrybutu linguist-Documentation, aby oznaczyć lub usunąć oznaczenie ścieżek jako dokumentacji:

    project-docs/* linguist-documentation

    LUB zaznacz pojedynczy plik zawierający dokumentację

    documented_code.rb linguist-documentation=true

    To trochę dziwne, ale możesz też zrobić - powiedzieć Githubowi, aby traktował niektóre pliki z określonym rozszerzeniem (np. * .Rb) jako Java:

    *.rb linguist-language=Java

  4. Git dodaje, zatwierdza, a następnie przekazuje do Githuba, etykieta zostanie poprawiona niemal natychmiast.

Jasny
źródło
Pracowało dla mnie, dodałem poniższe wiersze do mojego pliku .gitattributes *.java linguist-detectable=false *.dart linguist-language=Dart *.dart linguist-detectable=true android/* linguist-vendored build/* linguist-vendored
Chirag Savsani
15

Zamień swoje .gitattributes na this, co spowoduje przeklasyfikowanie wszystkich plików na Java.

 *.* linguist-language=Java

językoznawca

Sumit
źródło
8

Utwórz plik .gitattributes w katalogu głównym swojego folderu. Załóżmy, że chcesz, aby językiem był Java, po prostu skopiuj i wklej

*.java linguist-detectable=true *.js linguist-detectable=false *.html linguist-detectable=false *.xml linguist-detectable=false

w pliku .gitattributes i wypchnij plik do repo. Odśwież stronę GitHub, aby zobaczyć zmianę języka.

Uwaga : Tak więc dla żądanego języka upewnij się, że jest on prawdziwy, a innych fałszywy

Saif Siddiqui
źródło
2

Miałem projekt, który został uruchomiony w Objective-C i całkowicie zmieniony na Swift (nowy projekt, ale w tym samym katalogu repozytorium). Github ciągle identyfikował go jako Objective-C bez względu na to, co umieściłem w gitattributes. (wszystkie rozwiązania powyżej)

Tak więc, jeśli myślisz o tym, a jesteś pewien, że cały projekt jest jednym językiem - radykalnie postawiłeś:

wprowadź opis obrazu tutaj

Tylko to rozwiązało problem :)

Ethan Halprin
źródło
2

W pliku .gitattributes po prostu powiedz Linguistowi, żeby nie określał języków plików, których nie chcesz.

Przykład ignorowania plików Javascript.

*.js linguist-vendored
Ramil Mammadov
źródło
2

Możesz uniknąć nieoczekiwanego wykrywania języków (według rozszerzenia, podfolderu projektu itp.), Używając opcji wykrywalnej github linguist: w pliku .gitattributes :

Statystyki językowe obejmują tylko języki programowania. Języki innego typu (jak zdefiniowano w languages.yml) nie są „wykrywalne”, co powoduje, że nie są uwzględniane w statystykach językowych.

Użyj linguist-detectableatrybutu, aby oznaczyć lub usunąć oznaczenie ścieżek jako wykrywalnych:

*.kicad_pcb linguist-detectable=true
*.sch linguist-detectable=true
tools/export_bom.py linguist-detectable=false
Drakonoved
źródło
2

Jeśli chcesz zmienić język repozytorium Laravel, dodaj następujący wiersz do swojego .gitattributespliku:

*.blade.php linguist-vendored

GitHub definiuje pliki blade jako html, ale *.html linguist-vendorednie działa.

Slava
źródło
1

Rozwiązanie, które dostarczył ekspert EamonnM, który odpowiedział na powyższe pytanie, zadziałało w moim projekcie, ale są dwie istotne rzeczy.

  1. Język na początku drugiej linii jego kodu był językiem, którego chcesz, zamiast języka, którego nie lubisz. Pamiętaj, aby to rozróżnić.

  2. Wygląda na to, że nie można było wpisać spacji przed *. (Na przykład powinienem pisać, *.swift linguist-vendored=falsegdy chcę zmienić język na szybki.)

fafa
źródło
0

Utwórz plik o nazwie .gitattributes w folderze głównym projektu. Dodawanie {file_name} linguist-generated=truemoże załatwić sprawę. W moim przypadku,

mvnw.cmd linguist-generated=true
mvnw linguist-generated=true

pracował dla mnie.

Jacek
źródło
0

Ja też mam z tym problem. Utworzyłem .gitattributes w katalogu głównym mojego projektu. Usunąłem .js i .cs, ale .html nadal tam jest. To jest moje .gitattributes:

*.cs linguist-detectable=true
*.js linguist-detectable=false`
*.html linguist-detectable=false
*.xml linguist-detectable=false

Kiedy dodam * linguist-vendored, nie widzę nic na GitHubie.

Dzięki za pomoc.

wprowadź opis obrazu tutaj

Odpowiedź:

Wciąż to samo, plik .html jest nadal wyświetlany

Ivan Radunković
źródło
0

Odpowiedź jest dość prosta:

po prostu dodaj te linie w terminalu projektu

  1. touch .gitattributes po wpisaniu tego polecenia należy znaleźć ten plik -.gitattributes-. Jeśli ten plik się nie pojawia, spróbuj wyświetlić ukryte pliki, aby go znaleźć.
  2. *.* linguist-language=Java Zmień Javę na język docelowy -Swift w Twoim przypadku-
  3. git add .
  4. git commit -m "Change Tagged language from Java to Kotlin"
  5. git push Teraz po odświeżeniu strony Github powinieneś znaleźć nową aktualizację.
Mahmoud Zaher
źródło
-1
# add this two lines 
*.* linguist-language=Swift

project-docs/* linguist-documentation
janlionly
źródło
4
Czy możesz dodać wyjaśnienie do instrukcji kodu?
Stephan Hogenboom