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.



