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

Git 2.56-ը՝ բաշխված կոդի կառավարման համակարգը, թողարկվել է: Git-ը լիցենզավորված է GPLv2+ լիցենզիայով: Նախորդ թողարկման համեմատ, նոր տարբերակը ներառում է 748 փոփոխություն, որոնք պատրաստվել են 104 մշակողների կողմից, որոնցից 39-ը նորեկ են Git մշակման ոլորտում: Հիմնական նոր հնարավորություններ (1, 2, 3):

  • «git add --resolved» ռեժիմը ավելացվել է ճյուղերի միաձուլման ժամանակ կոնֆլիկտները լուծելու համար: Այս ռեժիմը ստուգում է ֆայլերի կոնֆլիկտի նշիչները, և եթե նշիչը հայտնաբերվում է առնվազն մեկ ֆայլում, վերադարձնում է սխալ, չի ինդեքսավորում որևէ ֆայլ և ցուցադրում է ուղղման կարիք ունեցող ֆայլերի ցանկ: Ի տարբերություն «git add --update» հրամանի, այս նոր ռեժիմը մշակում է միայն կոնֆլիկտի վիճակում գտնվող ֆայլերը և անտեսում է կոնֆլիկտի հետ կապ չունեցող փոփոխված ֆայլերը: Սա թույլ է տալիս ճյուղերի միաձուլումները անվտանգ կերպով ավարտել, նույնիսկ եթե աշխատանքային գրացուցակում կան այլ անավարտ խմբագրումներ («git add --update» հրամանը աշխատանքային գրացուցակում նախկինում հետևված բոլոր փոփոխված ֆայլերը ավելացրել է ինդեքսին):
  • Մեծ պահոցների հետ աշխատանքը զգալիորեն արագացել է՝ ճյուղերի միաձուլման և համեմատման ժամանակ ամենավերջին ընդհանուր կոմիտների որոնման ալգորիթմի օպտիմալացման շնորհիվ։ Գործընթացն այժմ դիտարկում է բացառապես մեկ ճյուղին պատկանող կոմիտները, ինչը թույլ է տալիս սկանավորումը դադարեցնել բոլոր հնարավոր ընդհանուր նախնիների գտնելուց անմիջապես հետո՝ առանց ժամանակ վատնելու փոփոխությունների պատմության հետագա ուսումնասիրության վրա։ Մեկ փորձարկված պահոցում որոնման արագությունը միջինում աճել է 20 անգամ, մինչդեռ մեկ այլում՝ արագացումը հասել է 70 անգամի։ Երբ պահոցում միջուկով գործարկվում է "git merge-base --all v4.8 v4.9" հրամանը։ Linux Անցման աստիճանների քանակը 167 հազարից նվազել է մինչև 3.8 հազար։
  • «--path-walk» վերափաթեթավորման ռեժիմը հարմարեցվել է սերվերի օգտագործման համար, թույլ տալով ստեղծել ավելի կոմպակտ փաթեթային ֆայլեր՝ խմբավորելով օբյեկտները ըստ իրենց ուղու գրացուցակների ծառում (օրինակ՝ Fluent UI պահոցի համար «--path-walk»-ի օգտագործումը փաթեթային ֆայլի չափը 558 ՄԲ-ից կրճատեց մինչև 164 ՄԲ): Նոր տարբերակը աջակցում է «--path-walk» ռեժիմի օգտագործումը հասանելիության բիթմապերի և դելտա կղզիների հետ համատեղ, որոնք օգտագործվում են Git հոսթինգի ծառայությունների կողմից՝ աշխատանքը արագացնելու և fork-երը հիմնական պահոցից մեկուսացնելու համար:
  • Վերացվել են խոշոր պահոցներում ավելորդ հաշվարկներ առաջացնող խոչընդոտները. վերացվել են reftable-ում գրելու ժամանակ ավելորդ ֆայլերի վիճակի ստուգումները, վերացվել է ցուցակի վերասկանավորումը յուրաքանչյուր նոր packfile ներմուծման համար, արագացվել են reftable-ի գործողությունները, որոնք պարունակում են կուտակված մեծ ջնջման գրառումներ, օպտիմալացվել է git diff-ի աշխատանքը ֆայլի ուղու սահմանափակումները նշելիս: Այս օպտիմալացումներից հետո մեծ թվով ջնջումներով reftable-ի գործողությունները արագացվել են 65 անգամ (13 վայրկյանից մինչև 0.2 վայրկյան), և Chromium պահոցում ինդեքսում 500000 տարր ունեցող խնդրահարույց git diff հրամանը այժմ տևում է 0.07 վայրկյան՝ 8 րոպեի փոխարեն:
  • Փոփոխությունների պատմությունը վերաշարադրելու հնարավորություն տվող փորձարարական «git history» հրամանը թարմացվել է՝ ներառելով «git history drop» գործողությունը՝ ընտրված «commit»-ը հեռացնելու և դրա ժառանգները ծնող «commit»-ին ավտոմատ կերպով կցելու համար։
  • Ավելացվել է "git branch --delete-merged 'origin/*' 'topic-*'" հրամանը՝ տեղական մասնաճյուղերի խմբերը անվտանգ կերպով ջնջելու համար, որոնց փոփոխություններն արդեն իսկ կատարվել են արտաքին պահոցում: Wildcard-երը կարող են օգտագործվել մասնաճյուղերը և պահոցները զտելու համար: "--dry-run" դրոշը կարող է օգտագործվել ջնջման թեկնածուները վերլուծելու համար՝ առանց իրականում գործողությունը կատարելու:
  • Ավելացվել է "git refs create|update|delete|rename" հրամանը, որը համատեղում է ցածր մակարդակի գործողություններ՝ հղումներ ստեղծելու, ջնջելու, վերանվանելու և թարմացնելու համար։
  • "git bisect run" հրամանն այժմ ունի "--reset-when-found=[" տարբերակը։ ]", որը ավտոմատ կերպով վերադարձնում է պահոցը որոնման սկսվելուց առաջ եղած վիճակին կամ թողնում է խնդրահարույց «commit»-ը ակտիվ՝ առանց «git bisect reset» հրամանը առանձին գործարկելու անհրաժեշտության։
  • 'git replay' հրամանն այժմ ունի '--linearize' դրոշակ՝ հարթ միաձուլման տոպոլոգիան օգտագործելու համար, նման 'git rebase --no-rebase-merges'-ին, բայց առանց աշխատանքային ծառին մուտք գործելու։
  • «git log --follow» հրամանն այժմ հետևում է ֆայլերի վերանվանումներին ոչ գծային կոմիտների պատմություններում, օրինակ՝ ենթաճյուղերի միաձուլման ժամանակ։ Ֆայլի ուղին այժմ գրանցվում է առանձին յուրաքանչյուր ծնող կոմիտի համար, ինչը արդյունքը դարձնում է անկախ կոմիտների պատմության ուսումնասիրության հերթականությունից։
  • Ավելացվել է "git repack -a --filter=blob:limit=1m --drop-filtered" հրամանն օգտագործելու հնարավորություն՝ արտաքին պահոցից պահանջարկի համաձայն ներբեռնված և ընթացիկ ինդեքսում չօգտագործվող մեծ blob-երը հեռացնելու համար: Այս օբյեկտները ապագայում դրանց մուտք գործելիս ավտոմատ կերպով կրկին կներբեռնվեն:
  • Բազմակի անկախ արմատներ ունեցող գրաֆների համար "git log --graph" հրամանն այժմ ավելացնում է ինդենցիա՝ կապ չունեցող կոմիտները հստակորեն առանձնացնելու համար։
  • Հաճախ հանդիպող սխալները, օրինակ՝ «git push origin/main» նշելը «git push origin main»-ի փոխարեն կամ «git branch --set-upstream-to origin main»-ը «git branch --set-upstream-to=origin/main»-ի փոխարեն, այժմ հայտնաբերվում են, և ցուցադրվում է ճիշտ տարբերակն օգտագործելու վերաբերյալ հուշում։

Source: opennet.ru

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster