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-detectable

Adım adım

  1. Projenin kök dizininde (pubspec.yaml ile aynı yerde) .gitattributes adında bir dosya oluşturun.
  2. Yukarıdaki içeriği yapıştırıp kaydedin.
  3. Değişikliği gönderin: git add .gitattributes, git commit -m "chore: fix GitHub language stats", git push.
  4. 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-generated

Hâlâ düzelmediyse

  • Varsayılan dala push ettiğinizden emin olun; Linguist yalnızca onu sayar.
  • .gitattributes gerç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.