Git 2.51, önemli performans iyileştirmeleri ve yeni özelliklerle geliyor

git 2.51

İki aylık yoğun bir çalışmanın ardından, geliştirme topluluğu Git, Git 2.51 sürümünü tanıttı, bir güncelleme 506 geliştiricinin katıldığı 91 değişikliği bir araya getiriyor, Bunlardan 21'i ilk kez katılım sağladı.

Bu sürüm, git-push ve git-fetch için performans iyileştirmeleri ve yeni 3.x dalına doğru ilerleyen çeşitli değişiklikler de dahil olmak üzere performansı artırmak ve depo yönetimini basitleştirmek için tasarlanmış iyileştirmeleri sunar.

Git 2.51'in öne çıkan özellikleri

Git 2.51'in öne çıkan özelliklerinden biri Git push ve git fetch komutlarını optimize etme çok sayıda referansın bulunduğu depolarda. Bu iyileştirmenin anahtarı toplu güncellemededir, birden fazla bağlantıyı tek tek işlemek yerine tek bir işlemde işleyen.

Bu optimizasyon sayesinde, Yeniden kullanılabilir arka uç artık geleneksel dosya arka ucundan daha iyi performans gösteriyor.10'e kadar referans içeren depolarla yapılan testlerde, git fetch performansı reftable için 000 kat, files için ise 22 kat artarken, git push performansı sırasıyla 1.25 kat ve 18 kat arttı.

Bir diğer önemli yenilik ise iCruft paketleri olarak adlandırılan paketlerin tanıtımı, dallara veya etiketlere bağlı olmayan erişilemeyen nesneleri depolamak için tasarlanmıştır. Daha önce dağınık halde bulunan bu nesneler, artık ayrı bir ambalajda yönetilebilirBu, bunların kontrol edilmesini kolaylaştırır ve çoklu paket indekslerinin (MIDX) boyutunu azaltır.

Birlikte yeni repack.MIDXMustContainCruft ayarı, Git bu nesnelerin ana dizinlere dahil edilmesini önlerGitHub'daki testlerde bu yapılandırmanın indeks boyutunu %38 oranında azalttığı, yazma işlemlerini %35 oranında hızlandırdığı ve okuma işlemlerini %5 oranında iyileştirdiği görüldü.

Nesne paketlemeye yeni yaklaşım

El git pack-objects komutu –path-walk seçeneğini içerir, yenilikçi bir yöntem sunan paketleme dosyalarını yeniden düzenlemek için. Git, nesneleri karma değerlerine göre işlemek yerine, artık dosya yollarına göre yineleme yaparak aynı konumu paylaşanları bir araya paketleyebilir. Bu yaklaşım, nesneleri önceden sıralama ihtiyacını ortadan kaldırır ve daha küçük, daha verimli paketleme dosyalarıyla sonuçlanır.

Bu versiyonla da Git Stash ile oluşturulan çalışma ağacı durumlarını ve indeksleri değiştirmek için yeni bir format standartlaştırıldı.Artık stash'leri tıpkı dallar veya etiketler gibi dışa ve içe aktarmak mümkün, bu da durumları bir sistemden diğerine taşımayı kolaylaştırıyor.

Örnek:

git stash export --to-ref refs/stashes/mi-stash git push origin refs/stashes/mi-stash git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/mi-stash

Klasik komutlarda iyileştirmeler

birkaç Git komutları ilgili güncellemeleri aldı:

  • git cat-file artık eksik nesneleri ve alt modülleri bildiriyor ve sadece "eksik" olarak işaretlemek yerine tanımlayıcıları da gösteriyor.
  • git log, Bloom filtre optimizasyonlarından yararlanarak birden fazla dosya yolu ile yapılan aramaları hızlandırır.
  • 2019'dan beri deneysel olarak değerlendirilen git switch ve git restore komutları sonunda git checkout'a modern alternatifler olarak stabil hale getirildi.
  • Git log –raw komutuna eşdeğer olan git whatchanged komutu kullanımdan kaldırılmıştır ve Git 3.0'da kaldırılacaktır.
  • git for-each-ref, –count ile birlikte çıktının sayfalandırılmasına izin veren –start-after seçeneğini alır.
  • git merge ve git pull artık daha öz bir özet biçimi sağlayan –compact-summary seçeneğini içeriyor.

C99 desteği ve yeni katkı kuralları

Git, kodunu C9 standardının özelliklerine uyarlamaya devam ediyor9. 2021 yılından bu yana uyumlu bir derleyiciye ihtiyaç duyulmasına rağmen, geliştiriciler bunu yalnızca kısmen uygulayan derleyicilerle uyumluluğu korumak için temkinli davranıyorlar.

Ayrıca katkı payı politikasında önemli bir değişiklik yapıldı: Yamalar artık takma ad altında gönderilebilirLinux çekirdeğinin kurallarıyla uyumlu ve katkıda bulunanlara daha fazla esneklik sunmak için tasarlanmış bir karar.

Git 3.0'a bakış

El Geliştirme ekibi ayrıca yol haritasını Git 3.0'a güncelledi.Burada iki önemli değişiklik öne çıkıyor: nesne tanımlayıcısı olarak varsayılan SHA-256 kullanımı ve dal ve etiket referanslarının depolanması için reftable formatının benimsenmesi. Bu iyileştirmeler, giderek büyüyen ve karmaşıklaşan depolarda güvenliği ve verimliliği artırmayı hedefliyor.

kaynak: https://lore.kernel.org