Flutter projenizi GitHub'a yükleyince dil olarak C++ ya da CMake görünüyorsa sorun, otomatik üretilen platform klasörleridir. .gitattributes ile Linguist'e bu klasörleri saydırmayarak dili Dart'a döndürmenin yolunu adım adım anlatıyoruz.
Flutter projenizi GitHub'a yüklediniz ama depo sayfasında dil çubuğu Dart yerine C++ (bazen CMake ya da Swift) gösteriyor. Kodunuzun neredeyse tamamı Dart olsa bile böyle olabilir. İyi haber: bu tek satırlık bir yapılandırmayla düzeliyor.
Neden C++ görünüyor?
GitHub, bir deponun dillerini Linguist adlı araçla, dosyaların bayt boyutuna bakarak hesaplar. Flutter ise projeye android/, ios/, windows/, linux/, macos/ gibi otomatik üretilen platform klasörleri ekler. Bu klasörler bol miktarda C++, C, CMake, Swift ve Kotlin dosyası içerir. Toplam bayt olarak bu üretilmiş kod, sizin lib/ içindeki Dart kodunuzu geçtiği için depo yanlışlıkla "C++ projesi" gibi görünür.
Çözüm: .gitattributes
Depo kök dizinine bir .gitattributes dosyası ekleyip, üretilen platform klasörlerini Linguist'in dil istatistiğinden çıkarırsınız. Böylece geriye sizin Dart kodunuz kalır ve dil doğru görünür.
# GitHub dil algılamasini duzelt: uretilen platform kodunu istatistik disi birak
android/** linguist-vendored
ios/** linguist-vendored
linux/** linguist-vendored
macos/** linguist-vendored
windows/** linguist-vendored
web/** linguist-vendored
# Dart'in algilandigindan emin ol
*.dart linguist-detectableAdım adım
- Projenin kök dizininde (pubspec.yaml ile aynı yerde)
.gitattributesadında bir dosya oluşturun. - Yukarıdaki içeriği yapıştırıp kaydedin.
- Değişikliği gönderin:
git add .gitattributes,git commit -m "chore: fix GitHub language stats",git push. - GitHub, dilleri yalnızca varsayılan dala (main) yapılan push'ta yeniden hesaplar; birkaç dakika içinde çubuk güncellenir.
vendored mı, generated mı?
İki seçenek de klasörü dil istatistiğinden çıkarır, aralarındaki fark sunumda: linguist-vendored "üçüncü parti/üretilmiş kod" olarak işaretler; linguist-generated ise ek olarak bu dosyaları diff görünümünde de gizler. Platform klasörlerini gözden tamamen kaldırmak isterseniz generated kullanın:
android/** linguist-generated
ios/** linguist-generated
windows/** linguist-generated
linux/** linguist-generated
macos/** linguist-generatedHâlâ düzelmediyse
- Varsayılan dala push ettiğinizden emin olun; Linguist yalnızca onu sayar.
.gitattributesgerçekten kök dizinde mi ve yollar doğru mu kontrol edin.- GitHub'ın yeniden taraması büyük depolarda birkaç dakika gecikebilir; sabredin.
- Hiçbir şey değişmezse boş bir commit ile tetikleyin:
git commit --allow-empty -m "retrigger linguist"ve push edin.
Özet
GitHub'ın Flutter projesini C++ göstermesi bir hata değil, üretilen platform kodunun baytça baskın olmasının sonucu. Kök dizine küçük bir .gitattributes ekleyip platform klasörlerini linguist-vendored (veya generated) ile işaretlemek, depoyu olması gerektiği gibi bir Dart projesi olarak gösterir.