Git 2.39 kaynak denetimi sürümü

İki aylık geliştirme sürecinin ardından dağıtılmış kaynak kontrol sistemi Git 2.39 piyasaya sürüldü. Git, dallanma ve birleştirmeye dayalı esnek, doğrusal olmayan geliştirme araçları sağlayan, en popüler, güvenilir ve yüksek performanslı sürüm kontrol sistemlerinden biridir. Geçmişin bütünlüğünü ve geriye dönük değişikliklere karşı direnci sağlamak için, her bir taahhütte önceki geçmişin tamamının örtülü karması kullanılır; bireysel etiketleri ve taahhütleri geliştiricilerin dijital imzalarıyla sertifikalandırmak da mümkündür.

Önceki sürümle karşılaştırıldığında yeni sürüm, 483 geliştiricinin katılımıyla hazırlanan ve 86'i ilk kez geliştirmede yer alan 31 değişiklik içeriyordu. Ana yenilikler:

  • Değişiklik geçmişinden istatistikler içeren özetleri görüntülemeyi amaçlayan "git shortlog" komutu, taahhütlerin yazar veya taahhüt edenle sınırlı olmayan alanlara göre keyfi olarak gruplandırılması için bir "-group" seçeneği ekledi. Örneğin, "Ortak yazan" alanında bahsedilen yardımcıları dikkate alarak değişiklik sayısıyla ilgili bilgi içeren geliştiricilerin bir listesini görüntülemek için şu komutu kullanabilirsiniz: git shortlog -ns --group=author - -group=fragman:ortak yazar

    Kısa günlük çıktısı, biçimlendirme belirticileri kullanılarak toplanabilir ve "--group" seçeneği, karmaşık raporların oluşturulmasını önemli ölçüde basitleştirebilir ve ek sıralama komutlarına olan ihtiyacı ortadan kaldırabilir. Örneğin, belirli bir sürüm için her ay kaç işlemin kabul edildiğine ilişkin bilgileri içeren bir rapor oluşturmak için şunları belirtebilirsiniz: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Daha önce, benzer bir işlemi gerçekleştirmek için sort ve uniq yardımcı programlarının kullanılması gerekliydi: git log v2.38.0 .. —tarih='format:%Y -%m' —format='%cd' | sıralama | benzersiz -c

  • Depoda referans verilmeyen (dallar veya etiketler tarafından referans verilmeyen) erişilemeyen nesnelerin paketlenmesi için tasarlanan "cruft pack" mekanizmasının yetenekleri genişletildi. Ulaşılamayan nesneler çöp toplayıcı tarafından silinir, ancak yarış koşullarını önlemek için silinmeden önce belirli bir süre depoda kalır. "Cruft packs" mekanizması, erişilemeyen tüm nesneleri tek bir paket dosyasında saklamanıza ve her nesnenin değiştirilme zamanına ilişkin verileri ".mtimes" uzantılı ayrı bir dosyada saklanan ayrı bir tabloda görüntülemenize olanak tanır. toplam değişiklik süresiyle örtüşmez.

    Ulaşılamayan nesnelerin gerçekten silinmeden önce depoda kalma süresi “—prune=” seçeneği ile belirlenir. " Ancak silmeden önce geciktirmek, yarış koşulları nedeniyle depo bozulmasını önlemenin oldukça etkili ve pratik bir yolu olsa da %100 güvenilir değildir. Hasar görmüş bir depoyu geri yüklemeyi kolaylaştırmak için yeni sürüm, harici bir veri deposu oluşturmak için bir dosya belirtmenize olanak tanıyan "git repack" komutuna "--expire-to" seçeneğini ekleyerek eksik nesneleri kaydetme olanağı sağlıyor. silinen tüm nesnelerin kopyası. Örneğin, son 5 dakika içinde değişmeyen, erişilemeyen nesneleri backup.git dosyasına kaydetmek için şu komutu kullanabilirsiniz: git repack --cruft --cruft-expiration=5.minute.ago -d --expire -to=../backup.git

  • Kısmi klonlama (seyrek ödeme) kullanan ve kısmi dizinlerin (seyrek dizin) olduğu alanlarda arama yaparken "git grep -cached" işleminin hızı önemli ölçüde artırıldı (%70'e kadar). Daha önce, "-cached" seçeneği belirtilirken, arama önce normal dizinde, ardından kısmi olanlarda gerçekleştiriliyordu ve bu, büyük depolarda arama yaparken gözle görülür gecikmelere yol açıyordu.
  • "Git Push" işlemi sırasında yeni nesnelerin depoya yerleştirilmeden önce sunucunun tutarlılığının doğrulanması hızlandırıldı. Yalnızca %7'ü itme işlemi tarafından kapsanan 3 milyon bağlantı içeren bir test havuzunda, kontrol sırasında yalnızca belirtilen bağlantıların muhasebeleştirilmesine geçilerek, sunulan optimizasyonlar kontrol süresinin 4.5 kat azaltılmasını mümkün kıldı.
  • Koddaki potansiyel tamsayı taşmalarına karşı koruma sağlamak için "git application" komutu, işlenebilecek maksimum yama boyutunu sınırlar. Yama boyutu 1 GB'yi aşarsa artık bir hata görüntülenecektir.
  • Olası güvenlik açıklarına karşı koruma sağlamak amacıyla, h2h3 modülünü HTTP/1 ile birlikte GIT_TRACE_CURL=1 veya GIT_CURL_VERBOSE=2 seçeneğiyle kullanırken ayarlanan başlıklardan gereksiz bilgilerin temizlenmesi için değişiklikler yapıldı.
  • Başka bir dalın sembolik bağlantısı olan bir dalda kontrol gerçekleştirirken, "git sembolik-ref HEAD" komutu artık sembolik bağın adı yerine hedef dalın adını görüntülüyor.
  • Önceki bir dalın açıklamasını düzenlemek için “--edit-description” seçeneğine (“git Branch —edit-description @{-1}”) @{-1} bağımsız değişkeni için destek eklendi.
  • Seçeneklerin listesini standart giriş yoluyla iletmek için "git merge-tree --stdin" komutu eklendi.
  • Ağ dosya sistemlerinde, dosya sistemindeki değişiklikleri izleyen fsmonitor işleyicisi varsayılan olarak devre dışıdır.

Kaynak: opennet.ru

Yorum ekle