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

İki aylıq inkişafdan sonra paylanmış mənbə idarəetmə sistemi Git 2.39 buraxıldı. Git ən populyar, etibarlı və yüksək məhsuldar versiyaya nəzarət sistemlərindən biridir, budaqlanma və birləşməyə əsaslanan çevik qeyri-xətti inkişaf vasitələrini təmin edir. Tarixçənin bütövlüyünü və retroaktiv dəyişikliklərə qarşı müqaviməti təmin etmək üçün hər bir öhdəçilikdə bütün əvvəlki tarixin gizli heşinqindən istifadə olunur, həmçinin fərdi teqləri və öhdəlikləri tərtibatçıların rəqəmsal imzaları ilə təsdiqləmək mümkündür.

Əvvəlki buraxılışla müqayisədə, yeni versiyaya 483 tərtibatçının iştirakı ilə hazırlanmış 86 dəyişiklik daxil edilib, onlardan 31-i ilk dəfə işlənmədə iştirak edib. Əsas yeniliklər:

  • Dəyişikliklər tarixindən statistika ilə xülasələri göstərmək üçün nəzərdə tutulmuş "git shortlog" əmri, müəllif və ya icraçı ilə məhdudlaşmayan sahələr üzrə tapşırıqların ixtiyari qruplaşdırılması üçün "-qrup" seçimini əlavə etdi. Məsələn, "Birgə müəllif" sahəsində qeyd olunan köməkçiləri nəzərə alaraq dəyişikliklərin sayı haqqında məlumatı olan tərtibatçıların siyahısını göstərmək üçün aşağıdakı əmrdən istifadə edə bilərsiniz: git shortlog -ns --group=author - -qrup = treyler: həmmüəllif

    Shortlog çıxışı formatlama təyinedicilərindən istifadə etməklə birləşdirilə bilər və “--qrup” seçimi mürəkkəb hesabatların yaradılmasını əhəmiyyətli dərəcədə sadələşdirə və əlavə çeşidləmə əmrlərinə ehtiyacı aradan qaldıra bilər. Məsələn, hər ay verilmiş buraxılış üçün neçə öhdəliyin qəbul edildiyi barədə məlumatı əks etdirən hesabat yaratmaq üçün aşağıdakıları qeyd edə bilərsiniz: 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 Əvvəllər oxşar əməliyyatı yerinə yetirmək üçün sort və uniq utilitlərindən istifadə etmək lazım idi: git log v2.38.0 .. —tarix='format:%Y -%m' —format='%cd' | sort | uniq -c

  • Repozitoriyada istinad edilməyən (filiallar və ya teqlər tərəfindən istinad edilməyən) əlçatmaz obyektlərin qablaşdırılması üçün nəzərdə tutulmuş “cruft packs” mexanizminin imkanları genişləndirilmişdir. Əlçatmaz obyektlər zibil yığan tərəfindən silinir, lakin yarış şəraitindən qaçmaq üçün silinməzdən əvvəl müəyyən müddət anbarda qalırlar. “Cruft packs” mexanizmi sizə bütün əlçatmaz obyektləri bir paket faylında saxlamağa və hər bir obyektin modifikasiya vaxtı haqqında məlumatları “.mtimes” uzantısı ilə ayrıca faylda saxlanılan ayrıca cədvəldə göstərməyə imkan verir. ümumi dəyişiklik vaxtı ilə üst-üstə düşmür.

    Əlçatmaz obyektlərin həqiqətən silinməmişdən əvvəl depoda qalma müddəti “—prune=” seçimi ilə müəyyən edilir. " Bununla belə, silmədən əvvəl gecikdirmə yarış şərtlərinə görə repozitor korrupsiyasının qarşısını almaq üçün kifayət qədər effektiv və praktik üsul olsa da, 100% etibarlı deyil. Zədələnmiş repozitoriyanın bərpasını asanlaşdırmaq üçün yeni buraxılış “git repack” əmrinə “--expire-to” seçimini əlavə etməklə itkin obyektləri saxlamaq imkanı verir ki, bu da xarici fayl yaratmaq üçün faylı təyin etməyə imkan verir. bütün silinmiş obyektlərin surəti. Məsələn, backup.git faylında son 5 dəqiqə ərzində dəyişməmiş əlçatmaz obyektləri saxlamaq üçün aşağıdakı əmrdən istifadə edə bilərsiniz: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Qismən klonlaşdırmadan istifadə edən (seyrək yoxlama) və qismən indekslər (seyrək indeks) olan ərazilərdə axtarış zamanı "git grep -cached" əməliyyatının sürəti əhəmiyyətli dərəcədə artırıldı (70%-ə qədər). Əvvəllər, "-cached" seçimini təyin edərkən, axtarış əvvəlcə adi indeksdə, sonra isə qismən olaraq aparılırdı ki, bu da böyük depolarda axtarış zamanı nəzərəçarpacaq gecikmələrə səbəb oldu.
  • “git push” əməliyyatı zamanı yeni obyektlərin repozitoriyaya yerləşdirilməzdən əvvəl onların uyğunluğunun server tərəfindən yoxlanılması sürətləndirilib. Yalnız 7%-i təkan əməliyyatı ilə əhatə olunan 3 milyon keçiddən ibarət sınaq anbarında yoxlama zamanı yalnız elan edilmiş keçidlərin uçotuna keçidlə aparılan optimallaşdırmalar yoxlama vaxtını 4.5 dəfə azaltmağa imkan verdi.
  • Kodda potensial tam daşqınlardan qorunmaq üçün "git apply" əmri emal oluna bilən yamaqların maksimum ölçüsünü məhdudlaşdırır. Yamanın ölçüsü 1 GB-ı keçərsə, indi xəta görünəcək.
  • Potensial zəifliklərdən qorunmaq üçün h2h3 modulundan HTTP/1 ilə birlikdə GIT_TRACE_CURL=1 və ya GIT_CURL_VERBOSE=2 seçimi ilə istifadə edərkən başlıqlardan lazımsız məlumatların təmizlənməsi üçün dəyişikliklər edilmişdir.
  • Başqa filiala simvolik keçid olan filialda yoxlama həyata keçirərkən, "git symbolic-ref HEAD" əmri indi simvolik əlaqənin adını deyil, hədəf filialın adını göstərir.
  • Əvvəlki filialın təsvirini redaktə etmək üçün “--edit-description” (“git filialı —edit-təsvir @{-1}”) seçiminə @{-1} arqumenti üçün dəstək əlavə edildi.
  • Seçimlər siyahısını standart giriş vasitəsilə ötürmək üçün "git merge-tree --stdin" əmri əlavə edildi.
  • Şəbəkə fayl sistemlərində fayl sistemindəki dəyişiklikləri izləyən fsmonitor işləyicisi defolt olaraq söndürülür.

Mənbə: opennet.ru

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