Git 2.39 աղբյուրի կառավարման թողարկում

Երկու ամիս մշակումից հետո թողարկվել է բաշխված աղբյուրի կառավարման համակարգը Git 2.39: Git-ը տարբերակների կառավարման ամենահայտնի, հուսալի և բարձր կատարողական համակարգերից մեկն է, որն ապահովում է ճկուն ոչ գծային զարգացման գործիքներ՝ հիմնված ճյուղավորման և միաձուլման վրա: Պատմության ամբողջականությունն ու հետադարձ փոփոխությունների դիմադրությունն ապահովելու համար յուրաքանչյուր կոմիտում օգտագործվում է ամբողջ նախորդ պատմության անուղղակի հաշինգը, հնարավոր է նաև ծրագրավորողների թվային ստորագրություններով հաստատել անհատական ​​պիտակներ և պարտավորություններ:

Նախորդ թողարկման համեմատ՝ նոր տարբերակը ներառում էր 483 փոփոխություն՝ պատրաստված 86 ծրագրավորողների մասնակցությամբ, որոնցից 31-ն առաջին անգամ մասնակցեցին մշակմանը։ Հիմնական նորամուծությունները.

  • «git shortlog» հրամանը, որը նախատեսված է փոփոխությունների պատմության վիճակագրությամբ ամփոփումներ ցուցադրելու համար, ավելացրել է «-group» տարբերակը՝ ըստ դաշտերի՝ հեղինակի կամ կատարողի կողմից չսահմանափակված պարտավորությունների կամայական խմբավորման համար: Օրինակ՝ ծրագրավորողների ցուցակը ցուցադրելու համար՝ փոփոխությունների քանակի մասին տեղեկատվությամբ, հաշվի առնելով «Համահեղինակ» դաշտում նշված օգնականները, կարող եք օգտագործել հրամանը՝ git shortlog -ns --group=author -: -group=trailer:համահեղինակ

    Shortlog-ի ելքը կարող է համախմբվել՝ օգտագործելով ձևաչափման սպեցիֆիկատորները, իսկ «--group» տարբերակը կարող է զգալիորեն պարզեցնել բարդ հաշվետվությունների ստեղծումը և վերացնել լրացուցիչ տեսակավորման հրամանների անհրաժեշտությունը: Օրինակ՝ հաշվետվություն ստեղծելու համար, որտեղ պարունակվում է տեղեկատվություն այն մասին, թե տվյալ թողարկման համար քանի պարտավորություն է ընդունվել յուրաքանչյուր ամիս, կարող եք նշել՝ 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 Նախկինում նմանատիպ գործողություն կատարելու համար անհրաժեշտ կլիներ օգտագործել տեսակավորման և uniq կոմունալ ծառայությունները՝ git log2.38.0 vXNUMX: .. —date='format:%Y -%m' —format='%cd' | տեսակավորել | uniq -գ

  • Ընդլայնվել են «կրաֆտ փաթեթների» մեխանիզմի հնարավորությունները, որոնք նախատեսված են անհասանելի առարկաներ փաթեթավորելու համար, որոնք նշված չեն պահոցում (չնշված ճյուղերով կամ պիտակներով): Անհասանելի առարկաները ջնջվում են աղբահանի կողմից, սակայն մնում են պահոցում որոշակի ժամանակ, մինչև դրանք ջնջվեն՝ մրցավազքի պայմաններից խուսափելու համար: «Cruft packs» մեխանիզմը թույլ է տալիս պահել բոլոր անհասանելի օբյեկտները մեկ փաթեթային ֆայլում և ցուցադրել յուրաքանչյուր օբյեկտի փոփոխման ժամանակի տվյալները առանձին աղյուսակում, որը պահվում է առանձին ֆայլում՝ «.mtimes» ընդլայնմամբ, որպեսզի դրանք կատարեն: չհամընկնել փոփոխության ընդհանուր ժամանակի հետ:

    Ժամանակի երկարությունը, որ անհասանելի օբյեկտները մնում են պահեստում, մինչև դրանք իրականում ջնջվեն, որոշվում է «--prune=» տարբերակով: Այնուամենայնիվ, չնայած ջնջելուց առաջ հետաձգելը բավականին արդյունավետ և գործնական միջոց է ռասայական պայմանների պատճառով պահեստների կոռուպցիան կանխելու համար, այն 100% հուսալի չէ: Վնասված պահեստը վերականգնելն ավելի հեշտ դարձնելու համար նոր թողարկումը հնարավորություն է տալիս պահպանել բացակայող օբյեկտները՝ ավելացնելով «--expire-to» տարբերակը «git repack» հրամանին, որը թույլ է տալիս նշել ֆայլ՝ արտաքին ֆայլ ստեղծելու համար: բոլոր ջնջված օբյեկտների պատճենը: Օրինակ՝ backup.git ֆայլում անհասանելի օբյեկտները, որոնք չեն փոխվել վերջին 5 րոպեի ընթացքում, կարող եք օգտագործել հրամանը՝ git repack --cruft --cruft-expiration=5.minutes.ago -d --expire: -to=../backup.git

  • Զգալիորեն ավելացել է (մինչև 70%) «git grep-cached» գործողության արագությունը, երբ որոնում է այն տարածքներում, որտեղ օգտագործվում է մասնակի կլոնավորում (sparse-checkout) և որոնց համար կան մասնակի ինդեքսներ (sparse index): Նախկինում «-cached» տարբերակը նշելիս որոնումն իրականացվում էր սկզբում սովորական ինդեքսում, այնուհետև մասնակի, ինչը հանգեցրեց նկատելի ուշացումների մեծ պահեստներում որոնումների ժամանակ։
  • Սերվերի կողմից նոր օբյեկտների համահունչության ստուգումը, նախքան դրանք պահոցում տեղադրվելը «git push» գործողության ընթացքում, արագացված է: Ստուգելիս անցնելով միայն հայտարարագրված հղումների հաշվառմանը՝ 7 միլիոն հղում ունեցող թեստային պահոցում, որոնցից միայն 3%-ն է ծածկված push գործողությամբ, կատարված օպտիմալացումները թույլ են տվել նվազեցնել ստուգման ժամանակը 4.5 անգամ:
  • Կոդի մեջ պոտենցիալ ամբողջ թվերի արտահոսքից պաշտպանվելու համար «git apply» հրամանը սահմանափակում է մշակման ենթակա պատչերի առավելագույն չափը: Եթե ​​կարկատակի չափը գերազանցում է 1 ԳԲ-ը, այժմ կցուցադրվի սխալ:
  • Պոտենցիալ խոցելիություններից պաշտպանվելու համար փոփոխություններ են կատարվել՝ մաքրելու ավելորդ տեղեկատվությունը վերնագրերից, որոնք h2h3 մոդուլն օգտագործում են GIT_TRACE_CURL=1 կամ GIT_CURL_VERBOSE=1 տարբերակով՝ HTTP/2-ի հետ միասին:
  • Երբ ստուգում ենք ճյուղի վրա, որը խորհրդանշական հղում է մեկ այլ ճյուղի, «git symbolic-ref HEAD» հրամանն այժմ ցուցադրում է նպատակային ճյուղի անունը, այլ ոչ թե սիմհղման անունը:
  • Ավելացրել է @{-1} արգումենտի աջակցությունը «--edit-description» տարբերակին («git branch —edit-description @{-1}»)՝ նախորդ մասնաճյուղի նկարագրությունը խմբագրելու համար:
  • Ավելացվեց «git merge-tree --stdin» հրամանը՝ ստանդարտ մուտքագրման միջոցով պարամետրերի ցուցակ փոխանցելու համար:
  • Ցանցային ֆայլային համակարգերում fsmonitor handler-ը, որը վերահսկում է ֆայլային համակարգի փոփոխությունները, լռելյայն անջատված է:

Source: opennet.ru

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