Git Deployment: Case Sensitivity 404 Hatası
1 Problem Tanımı (Problem Description)
Bağlam (Context): Quarto projesinin yerel ortamda (Localhost/Windows) sorunsuz çalışmasına rağmen, GitHub Pages (Linux) ortamına deploy edildikten sonra görsel bütünlüğünün kontrol edilmesi.
Tespit Edilen Hata (Observed Error): Yerel önizlemede (Preview) görüntülenen .png uzantılı görsellerin, canlı sunucuda (Production) yüklenmemesi ve kırık ikon (broken image) olarak görünmesi.
Log Çıktısı: GET https://ibrahimcapar.com/posts/sanal-ayiklama/images/TIA-2.png 404 (Not Found)
Sistem Ortamı (Environment):
Yazılım: Quarto CLI / Git for Windows
Versiyon: v1.8.25 (Quarto) / v2.51.2 (Git)
OS/Donanım:
Local: Windows 11 (Case-Insensitive)
Host: Ubuntu Latest (GitHub Actions - Case-Sensitive)
2 Kök Neden Analizi (Root Cause)
Tespit (Detection): Deployment sonrası güncellenen ilgili kısmın kontrol edilmesi sonucunda bazı görsellerin kırık ikon olarak göründüğü tespit edilmiştir.
Teknik Sebep (Technical Cause): Windows işletim sistemi dosya yollarında büyük/küçük harf duyarsızken (Case Insensitive), Linux sunucuların (GitHub Actions) duyarlı (Case Sensitive) olması. Kodda TIA-2.png çağrılırken dosyanın tia-2.png olması.
3 Çözüm Uygulaması (Resolution)
Sistemi kararlı hale getirmek için uygulanan adımlar:
- Kontrol İlk önce Git’in klasördeki dosyaları görüp görmediği ve takip edip etmediği kontrol edilmiştir.
git status komutu kaydedilecek bir şey olmadığını ve çalışma ağacının temiz olduğu bilgisini döndürmüştür. Listeleme komutu yaptıktan sonra ilgili resim isimleri büyük harflerle görünmektedir. Örn: TIA-2.png, TIA-3.png şeklinde.
- Standartlaştırma (Renaming) Hatalı görsel isimleri web standartlarına (lowercase) uygun hale getirilmiştir. Bu işlemde dosya isimlerine önce tmp ön eki eklenmiştir. Sonrasında ise tmp eki kaldırılarak standart isim formatında yeniden kaydedilmiştir.
İsim düzeltme işlemleri tamamlandıktan sonra ana dizine dönülmüş, değişiklikler commit edilerek uzak sunucuya gönderilmiştir.
git mv komutu dosyanın adını diskte değiştir ve bu değişikliği otomatik olarak “Stage” eder
- Doğrulama (Verification): GitHub Actions pipeline tamamlandıktan sonra tarayıcı önbelleği temizlendi (Ctrl+F5) ve görselin yüklendiği doğrulandı.