Git 2.37 mənbəyə nəzarət buraxılışı

Paylanmış mənbə idarəetmə sisteminin Git 2.37 buraxılışı təqdim olunur. Git, budaqlanan və birləşməyə əsaslanan çevik qeyri-xətti inkişaf vasitələrini təmin edən ən populyar, etibarlı və yüksək performanslı versiyaya nəzarət sistemlərindən biridir. Tarixin bütövlüyünü və dəyişikliklərə qarşı müqaviməti təmin etmək üçün "backdating", hər bir öhdəçilikdə bütün əvvəlki tarixin gizli heşinqindən istifadə olunur, həmçinin fərdi teq və öhdəlikləri tərtibatçıların rəqəmsal imzaları ilə yoxlamaq mümkündür.

Əvvəlki buraxılışla müqayisədə 395 tərtibatçının iştirakı ilə hazırlanan yeni versiyaya 75 dəyişiklik qəbul edilib, onlardan 20-si ilk dəfə işlənmədə iştirak edib. Əsas yeniliklər:

  • Anbarın yalnız bir hissəsini əhatə edən qismən indekslər mexanizmi (seyrək indeks) geniş istifadəyə hazır vəziyyətə gətirilmişdir. Qismən indekslər performansı yaxşılaşdıra və qismən klonlaşdırma əməliyyatlarını yerinə yetirən (seyrək yoxlama) və ya deponun qismən nüsxəsi üzərində işləyən depolarda yerə qənaət edə bilər. Yeni buraxılışda qismən indekslərin "git show", "git sparse-checkout" və "git stash" əmrlərinə inteqrasiyası üçün işlər tamamlanıb. Qismən indekslərin istifadəsindən ən diqqətəlayiq performans qazancı bəzi hallarda 80%-ə qədər daha sürətli olan "git stash" əmrindədir.
  • Repozitoriyada istinad edilməyən (filiallar və ya etiketlərə istinad edilmir) əlçatmaz obyektlərin qablaşdırılması üçün yeni “cruft packs” mexanizmi tətbiq edilmişdir. Əlçatmaz obyektlər zibil yığan tərəfindən çıxarılır, lakin yarış şəraitindən qaçmaq üçün çıxarılmazdan əvvəl müəyyən müddət anbarda qalır. Əlçatmaz obyektlərin dövrünü izləmək üçün etiketləri oxşar obyektlərin dəyişmə vaxtı ilə bağlamaq lazımdır ki, bu da onları bütün obyektlərin ümumi dəyişmə vaxtına malik olduğu bir paket-faylda saxlamağa imkan vermir. Əvvəllər hər bir obyektin ayrıca faylda saxlanması hələ silinməyə məruz qalmayan çoxlu sayda təzə, əlçatmaz obyektlər olduqda problemlərə səbəb olurdu. Təklif olunan “cruft packs” mexanizmi bütün əlçatmaz obyektləri bir paket-faylda saxlamağa və hər bir obyektin modifikasiya vaxtı haqqında məlumatları “.mtimes” uzantılı faylda saxlanılan ayrıca cədvəldə əks etdirməyə imkan verir.
  • Windows və macOS üçün fayl sistemində dəyişiklikləri izləmək üçün daxili mexanizm mövcuddur ki, bu da "git statusu" kimi əməliyyatları yerinə yetirərkən bütün işçi kataloqun sadalanması ehtiyacını aradan qaldırır. Əvvəllər, qarmaqlar vasitəsilə dəyişiklikləri izləmək üçün Watchman kimi xarici fayl sistemi dəyişikliklərini izləmə yardımçıları qoşula bilərdi, lakin bu, əlavə proqramların və konfiqurasiyanın quraşdırılmasını tələb etdi. Bu funksionallıq indi quraşdırılıb və "git config core.fsmonitor true" əmri ilə aktivləşdirilə bilər.
  • "Git sparse-checkout" əmri qismən klonlaşdırma üçün şablonların müəyyənləşdirilməsinin "-konus" rejiminə alternativ dəstəyi dayandırdı, bu, repozitoriyanın klonlama əməliyyatına məruz qalan hissəsini təyin edərkən "" istifadə edərək fərdi faylları siyahıya almağa imkan verir. .gitignore" sintaksisi, qismən indekslərin optimallaşdırılması üçün istifadə etməyə imkan vermir.
  • Diskdəki dəyişiklikləri silmək üçün fsync() çağırışının konfiqurasiyasında təkmilləşdirilmiş çeviklik. "Batch" sinxronizasiya strategiyası üçün dəstək "core.fsyncMethod" parametrinə əlavə edilib ki, bu da bir fsync() çağırışı ilə təmizlənmiş geri yazma keşində dəyişiklikləri toplayaraq çoxlu sayda fərdi faylların yazılması zamanı işi sürətləndirir. Git add əmrinə 500 faylın əlavə edilməsi ilə nəticələnən sınaq yeni rejim aktiv olduqda 0.15 saniyəyə, fsync() ilə hər bir fayl üçün 1.88 saniyə və fsync istifadə etmədən 0.06 saniyəyə tamamlandı.
  • "git log" və "git rev-list" kimi keçid əmrləri indi "X"-dən köhnə əməliyyatlar haqqında məlumatları filtrləmək üçün " --since-as-filter=X" seçiminə malikdir. “-since” seçimindən fərqli olaraq, yeni əmr müəyyən edilmiş vaxtdan daha köhnə ilk əməliyyatdan sonra axtarışı dayandırmayan filtr kimi həyata keçirilir.
  • "git remote" əmrində "-v" bayrağı göstərildikdə, deponun qismən klonları haqqında məlumat verilir.
  • "Xəbərdarlıq", "ölmək" və "icazə vermək" dəyərlərini qəbul edə bilən "transfer.credentialsInUrl" parametri əlavə edildi. Əgər "uzaqdan. .url" etimadnamələri aydın mətndə, "transfer.credentialsInUrl" parametri "ölmək" olaraq təyin edilərsə, "gətirmə" və ya "push" əməliyyatını yerinə yetirmək cəhdi uğursuz olacaq və ya "xəbərdarlıq" olaraq təyin edilərsə, xəbərdarlıq.
  • Varsayılan olaraq, Perl-dən C-yə yenidən yazılmış "git add -i" əmrinin interaktiv rejiminin yeni tətbiqi istifadə olunur.

Mənbə: opennet.ru

Добавить комментарий