Paylaşıldı Git 2.48 versiyasının paylanmış mətn idarəetmə sistemi. Git yüksək performansla fərqlenir və budaqlanma və birləşmə əsaslı qeyri-xətti inkişaf vasitələri təqdim edir. Keçmiş tarixlərin tamlığını və dəyişikliklərə qarşı dayanıqlığını təmin etmək üçün hər bir komitdə bütün keçmiş tarixin dolayı özünü xəşlənməsi və fərdi tagların və komitlərin rəqəmsal imzaları ilə təsdiqi istifadə olunur. Git kodu GPLv2+ lisenziyasına əsaslanaraq yayılır.
Keçən buraxılışla müqayisədə yeni versiyaya 93 proqramçıdan hazırlanmış 605 dəyişiklik qəbul edilib, onlardan 35-i ilk dəfə inkişafda iştirak edir. Əsas yeniliklər:
- Meson qurma sistemini istifadəsini təmin edən imkan əlavə olunmuşdur, GNU Make və CMake-ə əlavə. Git-i qurmaq üçün indi «meson setup build && ninja -C build» əmri istifadə oluna bilər. Qeyd olunur ki, GNU Make istifadə edərkən tətbiq olunan Makefile 3887 sətirə qədər böyüyüb və istənilən qədər sadə deyil. Meson alət dəsti qurma sistemində işləri asanlaşdırır, platformalararası qurulmalar üçün uyğundur və Make utilitası ilə iş təcrübəsi olmayan yeni başlayanlar və ya inkişafçılar üçün qurmanı daha əlçatan edir. Qısa müddətdə Make və CMake üçün dəstəyi dayandırmaq planlaşdırılmır.
- Pack-fayllarda məlumat bloklarının bütövlüyünü yoxlamaq üçün istifadə olunan kontrol cəmləri hesablama zamanı SHA-1 hash alternativ icra etmələrinin istifadəsinə imkan verən qurma seçimləri əlavə olunmuşdur. Kontrol cəmlərinin hesablanması performansı çox vacibdir, məsələn, Linux nüvəsi ilə repositoriyanı klonlama zamanı cəmi 78% prosessor vaxtı sərf edilir. İstifadə edilən standart icra əlavə kolliziyaların yoxlanması və SHA-1-ə qarşı SHAttered və Shambles kimi hücumlardan qorumayı özündə əhatə edir. Belə bir qoruma, əlavə resurslar istehlak etməklə, yalnız SHA-1-in kriptoqrafik məqsədlər üçün istifadəsində mənalıdır və indeks məlumatlarının itkisinin yoxlanması zamanı faydasızdır.
Kripto sistemlər üçün yararsız daha sürətli SHA-1 icraatı ilə Git-i qurmaq üçün *_UNSAFE adlanan bir sıra seçimlər təklif olunur, məsələn, «OPENSSL_SHA1_UNSAFE». GitHub-da sadələşdirilmiş SHA-1 ilə qurma məlumatların alınması və klonlaşdırılması əməliyyatlarını 10-13% sürətləndirməyə imkan tanımışdır.
- «range-diff» komandası üçün «—remerge-diff» seçiminin istifadəsi əlavə edildi. Bu seçim, birləşmə əməliyyatı başa çatdıqdan sonra commitdə əks olunan faktiki məlumatlarla görkəmli birləşmə nəticəsi arasındakı fərqləri göstərməyə imkan verir. «—remerge-diff» seçimi istifadə edildikdə, konfliktlərin həlli üçün fərqliliklər hər valideyn budağı üçün ayrı-ayrılıqda göstərilmir; əksinə, birləşmə konfliktləri olan fayla və konfliktlərin həll edildiyi fayla arasında ümumi fərqlər göstərilir. «range-diff» komandası kontekstində, yeni seçim «—rebase-merges» seçimi ilə commitlərin sırasını keçirmək üçün «rebase» komandası tərəfindən aparıldıqdan sonra commit dəstlərini müqayisə etmək üçün faydalı ola bilər.
- Git test dəstinin yaradılması ilə əlaqədar yaddaş sızıntılarını aşkar etmə rejimini aktivləşdirmək imkanı əlavə edildi. Git, çağırılmış funksiyanın icrası bitdikdən sonra işini başa çatdıran utilitlər təqdim etdiyindən, əvvəlki dövrdə yaddaş sızıntıları ciddi problem kimi qiymətləndirilmirdi. Yaddaş sızıntılarının tam aradan qaldırılması ehtiyacı, daxili funksionallığın uzunmüddətli proseslərdə istifadə oluna bilən ayrı bir kitabxanaya köçürülməsi ilə bağlı işlərə başlanıldıqdan sonra aktual oldu.
- Gələcəkdə dəstəklənməsi planlaşdırılan köhnəlmiş rejimlər və imkanların siyahısının hazırlanmasına başlanıldı. Köhnəlmiş funksionallığın 3.0 versiyasında aradan qaldırılacağı gözlənilir, bu versiya geri uyğunluğu pozan dəyişiklikləri də ehtiva edəcək.
- Repostorydə bağlantıların siyahısını çıxaran «git for-each-ref» komandasının işinin optimallaşdırılması davam etdirildi. Bağlantıları filtr edən və çıxışı formatlayan emalçıları birləşdirən optimallaşdırma, indi yalnız sıralanmamış çıxış üçün deyil, həm də «—sort» seçimi göstərildikdə tətbiq olunur.
- Sektoral saxlama ilə «reftable» arxa planının həyata keçirilməsi, branch və tag bağlantılarının repositoriyada effektiv saxlanması üçün təkmilləşdirildi. Reftable, çox sayda bağlantı olan repositoriyalarda axtarışı, oxumağı və yazmağı xeyli sürətləndirir. Yeni versiyada, libgit kitabxanasını qurma asılılıqlarından silmək məqsədilə bəzi köməkçi API ilə bağlantılar dayandırıldı. Yaddaş ayırma funksiyaları tərəfindən qaytarılan xətaların adaptiv emalı tətbiq edildi (yaddaşın çatışmazlığı indi sistemin qəza ilə başa çatmasına səbəb olmur). Bağlantı yaradılması əməliyyatları sürətləndirildi və yaddaş istehlakı azaldıldı.
- Qismən klonlama həyata keçirilməsindəki, «git gc» komandasının yerinə yetirilməsi sonrası sonsuzluq və repositoriyanın pozulmasına səbəb olan problemlər həll edildi.
- «git fetch <remote>» əmrini yerinə yetirərkən, əgər yerli sistemdə «refs/remotes/<remote>/HEAD» yoxdursa və digər tərəfdə HEAD-ə istinad edən bir qol varsa, «refs/remotes/<remote>/HEAD» indi bu qola yönləndirilir. «refs/remotes/<remote>/HEAD» unudulmalı olan HEAD ilə digər tərəfdəki əlaqə arasındakı sinxronizasiyanı tənzimləmək üçün yeni ayar əlavə olunmuşdur: remote.<remote>.followRemoteHEAD.
- «remote.<name>.serverOption» ayarı, komandaların sərhədində olan «—serverOption=<value>» parametrinə bənzər şəkildə əlavə olunub.
- «git rebase —rebase-merges» əmrində, mümkün olduqda qol adlarının etiket kimi istifadəsi təmin edilir.
- ‘git notes add’ və ‘git notes append’ komandalarına ‘-e’ flaqı əlavə olunub ki, bu da GIT_EDITOR mühit dəyişəni vasitəsilə göstərilmiş xarici mətn redaktorunda qeydləri açmağa imkan tanıyır.
- GCC 15 və C23 standartı ilə uyğunluq yaxşılaşdırılıb.
- Köhnə libcURL və Perl versiyaları dəstəklənməsi dayandırılıb.
Mənbə: opennet.ru
