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

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

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

  • Մասնակի ինդեքսների (նոսր ինդեքս) մեխանիզմը, որն ընդգրկում է պահեստի միայն մի մասը, պատրաստ է բերվել լայն կիրառման։ Մասնակի ինդեքսները կարող են բարելավել կատարումը և տարածք խնայել այն պահեստներում, որոնք կատարում են մասնակի կլոնավորման (նոսր դուրսգրման) գործողություններ կամ աշխատում են պահեստի թերի պատճենի հետ: Նոր թողարկումն ավարտում է մասնակի ինդեքսների ինտեգրումը git show, git sparse-checkout և git stash հրամաններին: Մասնակի ինդեքսների օգտագործման առավել նկատելի արդյունավետությունը երևում է git stash հրամանով, որը որոշ իրավիճակներում տեսել է կատարման արագության 80% աճ:
  • Գործարկվել է նոր «կռուֆտ փաթեթներ» մեխանիզմ՝ անհասանելի օբյեկտները փաթեթավորելու համար, որոնք հղումներ չկան պահոցում (չնշված ճյուղերով կամ պիտակներով): Անհասանելի առարկաները ջնջվում են աղբահանի կողմից, սակայն մնում են պահոցում որոշակի ժամանակ, մինչև դրանք ջնջվեն՝ մրցավազքի պայմաններից խուսափելու համար: Անհասանելի օբյեկտների առաջացման ժամանակաշրջանին հետևելու համար անհրաժեշտ է դրանց վրա պիտակներ կցել նմանատիպ օբյեկտների փոփոխության ժամանակով, ինչը թույլ չի տալիս դրանք պահել մեկ փաթեթային ֆայլում, որտեղ բոլոր օբյեկտներն ունեն ընդհանուր փոփոխության ժամանակ: Նախկինում յուրաքանչյուր օբյեկտ առանձին ֆայլում պահելը հանգեցնում էր խնդիրների, երբ կային մեծ թվով թարմ, անհասանելի օբյեկտներ, որոնք դեռ իրավասու չէին ջնջելու համար: Առաջարկվող «cruft packs» մեխանիզմը թույլ է տալիս պահել բոլոր անհասանելի առարկաները մեկ փաթեթային ֆայլում և արտացոլել յուրաքանչյուր օբյեկտի փոփոխման ժամանակի տվյալները առանձին աղյուսակում, որը պահվում է «.mtimes» ընդլայնմամբ ֆայլում:
  • Windows-ի և macOS-ի համար կա ֆայլային համակարգի փոփոխություններին հետևելու ներկառուցված մեխանիզմ, որը թույլ է տալիս խուսափել ամբողջ աշխատանքային գրացուցակի կրկնությունից՝ «git status» գործողություններ կատարելիս: Նախկինում փոփոխություններին հետևելու համար FS-ում փոփոխություններին հետևելու արտաքին կոմունալ ծառայությունները, ինչպիսին է Watchman-ը, կարող էին միանալ կեռիկների միջոցով, բայց դա պահանջում էր լրացուցիչ ծրագրերի տեղադրում և կազմաձևում: Այժմ նշված ֆունկցիոնալությունը ներկառուցված է և կարող է միացվել «git config core.fsmonitor true» հրամանով:
  • «git sparse-checkout» հրամանում հնացած է հայտարարվել «—con» ռեժիմի այլընտրանքի աջակցությունը, մասնակի կլոնավորման համար կաղապարներ սահմանելու մեթոդը, ինչը թույլ է տալիս որոշել պահեստի այն մասը, որը ենթակա է. կլոնավորման գործողությունը, ցուցակագրել առանձին ֆայլեր՝ օգտագործելով «.gitignore» շարահյուսությունը, որը թույլ չի տալիս օգտագործել մասնակի ինդեքսների օպտիմալացման համար:
  • Բարձրացված ճկունություն fsync() զանգը կարգավորելու համար՝ սկավառակի վրա փոփոխությունները մաքրելու համար: Աջակցություն «խմբաքանակի» համաժամացման ռազմավարությանը ավելացվել է «core.fsyncMethod» պարամետրին, որը թույլ է տալիս արագացնել աշխատանքը մեծ թվով անհատական ​​ֆայլեր գրելիս՝ կուտակելով փոփոխություններ գրման քեշում, որը զրոյացվում է մեկ fsync() միջոցով: զանգահարել. Թեստը, որի արդյունքում ավելացվել են 500 ֆայլեր «git add» հրամանի միջոցով, ավարտվել է 0.15 վայրկյանում, երբ նոր ռեժիմը միացված է, մինչդեռ fsync() կանչելը տևել է 1.88 վայրկյան յուրաքանչյուր ֆայլի համար, իսկ առանց fsync-ի օգտագործման՝ 0.06 վայրկյան:
  • Մասնաճյուղերի անցման հրամանները, ինչպիսիք են «git log»-ը և «git rev-list»-ը, այժմ ունեն «-since-as-filter=X» տարբերակ, որը թույլ է տալիս զտել «X»-ից ավելի հին կոմիտների մասին տեղեկությունները: Ի տարբերություն «—since» տարբերակի՝ նոր հրամանն իրականացվում է որպես զտիչ, որը չի դադարեցնում որոնումը նշված ժամանակից ավելի հին առաջին կատարումից հետո։
  • «git remote» հրամանում «-v» դրոշը նշելիս ցուցադրվում է պահեստի մասնակի կլոնների մասին տեղեկությունները:
  • Ավելացվեց «transfer.credentialsInUrl» պարամետրը, որը կարող է ընդունել «զգուշացնել», «մահանալ» և «թույլատրել» արժեքները։ Եթե ​​նշված է «հեռավոր. .url» պարզ տեքստի հավատարմագրերը, որոնք փորձում են կատարել «fetch» ​​կամ «push» գործողությունը, սխալմամբ, եթե «transfer.credentialsInUrl» պարամետրը դրված է «die», կամ նախազգուշացում, եթե սահմանված է «warn»:
  • Լռելյայնորեն միացված է «git add -i» հրամանի ինտերակտիվ ռեժիմի նոր իրականացումը, որը վերագրված է Perl-ից C:

Source: opennet.ru

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