3 puan yazan xguru 2025-03-25 | Henüz yorum yok. | WhatsApp'ta paylaş
  • bundle-uri, Git’in yeni bir özelliği; önbelleğe alınmış dosyaları indirerek proje verilerini önceden doldurur ve ardından sunucuyla yapılan karmaşık fetch sürecini azaltır
  • Normalde git clone komutu, gerekli verileri indirmek için sunucuyla bir müzakere süreci yürütür → bu verimsiz olabilir
  • bundle-uri, CDN’den önbelleğe alınmış başlangıç verilerini alır ve sonrasında yalnızca en güncel durumu sunucudan günceller → zaman kazandırabilir

Klonlama hızı artıyor mu?

Evet? - Daha hızlı olabilir

  • Yerel dosya seçeneği kullanılırsa klonlama hızı çok yükselir
  • VM’de bağlanmış dosya sistemi veya bulut önbelleğindeki bundle dosyaları kullanılırsa daha hızlı senkronizasyon mümkün olabilir

Hayır? - Daha yavaş olabilir

  • Aynı veriyi CDN’den almak daha hızlı olacak gibi görünse de, aslında daha yavaştı
  • Deney sonucu: bundle kullanılan klonlama, normal klonlamadan daha yavaş
    • Normal klonlama: 2 dakika 36 saniye
    • Bundle kullanılan klonlama: 3 dakika 20 saniye
  • Bundle’dan zaten alınmış nesnelerin yeniden indirilmesi sorunu ortaya çıktı

Belki? - Olabilir

  • Sorunun nedeni, Git’in bundle dosyasından yalnızca refs/heads (dal referansları) bilgisini okuması
  • Diğer referanslar yok sayıldığı için sunucudan ek veri indiriliyor
  • Git kodu değiştirilip tüm referansların kopyalanması sağlanırsa klonlama hızı iyileşiyor
    • Düzeltme sonrası klonlama süresi: 2 dakika 19 saniye (önceki 2 dakika 36 saniyeden daha hızlı)
    • Ek olarak indirilen nesne sayısı: 43.877 (toplamın yaklaşık %1’i)

Düzeltme yöntemi ve yamanın uygulanması

  • Git’in bundle-uri.c kodunda refs/heads dışındaki referansları yok sayan bölüm düzeltildi
  • Düzeltme sonrası tüm referanslar kopyalanacak şekilde değiştirildi → klonlama hızı arttı
  • Bu değişiklik, 6 karakterlik değişiklikten oluşan son derece küçük bir yamaydı

Bu özelliği kullanmalı mısınız?

Muhtemelen - Belki faydalı olabilir

  • GitHub, GitLab gibi platformlarda sunucu CPU yükünü azaltabilmesi büyük bir avantaj
    • Sunucu doğrudan packfile hesaplamak yerine işlemi CDN üzerinden yapabilir → sunucu kaynakları korunur
  • Bireysel kullanıcılar için de şu durumlarda faydalı olabilir:
    • Kurum içi Git sunucusunda büyük ölçekli klonlamaları tekrar tekrar yapmak gerekiyorsa
    • CI/CD sistemlerinde tekrarlanan tam klonlama işlemleri gerekiyorsa

Gerçekte zorunlu hale gelme ihtimali yüksek

  • En yeni Git protokolünde sunucu, istemciye bundle URL’si verebilir
  • Sunucu bundle dosyası URL’si sağlarsa istemci bunu otomatik olarak indirip ardından senkronizasyona devam eder
  • GitHub gibi platformlarda bu özellik etkinleştirilirse kullanıcıların seçim şansı kalmayabilir

Sonuç

  • Bundle dosyaları klonlama hızını artırabilir, ancak Git’in işleme biçimi yüzünden başlangıçta tam tersine daha yavaş da olabilir
  • Git kodunda referans işleme mantığı iyileştirilirse klonlama hızı artar
  • Gelecekte GitHub, GitLab gibi platformlar bu özelliği devreye alırsa istemciler bunu büyük olasılıkla otomatik olarak kullanacak

Henüz yorum yok.

Henüz yorum yok.