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.