Բաշխված աղբյուրի կառավարման համակարգը Git 2.48 թողարկվել է: Git-ը շատ արդյունավետ է և տրամադրում է ոչ գծային զարգացման գործիքներ՝ հիմնված ճյուղավորման և միաձուլման վրա: Պատմության ամբողջականությունն ու հետադարձ փոփոխությունների դիմադրությունն ապահովելու համար օգտագործվում է ամբողջ նախորդ պատմության անուղղակի հաշինգը յուրաքանչյուր կոմիտում, ինչպես նաև անհատական պիտակներ և պարտավորություններ մշակողների թվային ստորագրություններ: Git կոդը բաշխվում է GPLv2+ լիցենզիայի ներքո:
Նախորդ թողարկման համեմատ՝ նոր տարբերակը պարունակում է 605 փոփոխություն, որոնք պատրաստված են 93 ծրագրավորողների մասնակցությամբ, որոնցից 35-ն առաջին անգամ են մասնակցում մշակմանը։ Հիմնական նորամուծությունները.
- Իրականացրել է Meson build համակարգի միջոցով կառուցելու հնարավորությունը, ի լրումն GNU Make-ի և CMake-ի: Git-ը ստեղծելու համար այժմ կարող եք օգտագործել «meson setup build && ninja -C build» հրամանը։ Նշվում է, որ GNU Make-ն օգտագործելու ժամանակ օգտագործվող Makefile-ն աճել է մինչև 3887 տող և այնքան էլ պարզ չէ, որքան մենք կցանկանայինք: Meson-ի գործիքակազմը պարզեցնում է կառուցման համակարգը, հարմար է միջպլատֆորմային կառուցումների համար և ավելի հասանելի է դարձնում շինարարությունը սկսնակների կամ ծրագրավորողների համար, ովքեր փորձ չունեն Make կոմունալ ծրագրի հետ: Տեսանելի ապագայում Make-ի և CMake-ի աջակցությունը դադարեցնելու պլաններ չկան:
- Ավելացվել են կառուցման ընտրանքներ, որոնք թույլ են տալիս օգտագործել SHA-1 հեշի այլընտրանքային իրականացումները՝ փաթեթային ֆայլերում տվյալների բլոկների ամբողջականությունը ստուգելու համար օգտագործվող չեկային գումարները հաշվարկելիս: Չեկային գումարի հաշվարկի կատարումը մեծ նշանակություն ունի, օրինակ, պրոցեսորի ժամանակի մոտ 78%-ը ծախսվում է դրանց հաշվարկի վրա, երբ պահեստը կլոնավորում է Linux միջուկով. Լռելյայն իրականացումը ներառում է լրացուցիչ բախումների ստուգումներ և պաշտպանություն SHA-1 հարձակումներից, ինչպիսիք են SHAttered-ը և Shambles-ը: Նման պաշտպանությունը, որը սպառում է լրացուցիչ ռեսուրսներ, իմաստ ունի միայն SHA-1-ը գաղտնագրման նպատակներով օգտագործելու դեպքում և անօգուտ է ինդեքսի տվյալների ամբողջականությունը ստուգելիս:
Git-ն ավելի արագ SHA-1 իրականացմամբ, որը հարմար չէ կրիպտոհամակարգերի համար, առաջարկվում է մի շարք *_UNSAFE տարբերակներ, օրինակ՝ «OPENSSL_SHA1_UNSAFE»: GitHub-ում պարզեցված SHA-1-ով կառուցումը թույլ տվեց 10-13%-ով բարձրացնել տվյալների որոնման և կլոնավորման գործողությունների կատարողականը:
- Ավելացվել է «-remerge-diff» տարբերակը «range-diff» հրամանում օգտագործելու հնարավորությունը, որը թույլ է տալիս «միաձուլման» հրամանը մշակելուց հետո ցույց տալ միավորման ընդհանուր արդյունքի և իրական տվյալների միջև եղած տարբերությունները: «--remerge-diff» տարբերակը օգտագործելիս կոնֆլիկտների լուծման տարբերությունները չեն առանձնացվում յուրաքանչյուր մայր ճյուղի համար, սակայն ցուցադրվում են ընդհանուր տարբերությունները միաձուլման կոնֆլիկտներ ունեցող ֆայլի և կոնֆլիկտները լուծված ֆայլի միջև: Range-diff հրամանի համատեքստում նոր տարբերակ կարող է օգտակար լինել կոմիտացիաների հավաքածուները համեմատելու համար այն բանից հետո, երբ միգրացիայի հաջորդականությունը rebase հրամանի կողմից փոխադրվել է --rebase-merges տարբերակով:
- Ավելացվեց Git թեստային փաթեթը գործարկելու հնարավորությունը՝ միացված հիշողության արտահոսքի հայտնաբերմամբ: Քանի որ git-ն ապահովում է կոմունալ ծառայություններ, որոնք դուրս են գալիս կանչված ֆունկցիայի կատարումից հետո, հիշողության արտահոսքը նախկինում մեծ խնդիր չէր համարվում: Հիշողության արտահոսքի ամբողջական վերացման անհրաժեշտությունը հրատապ դարձավ այն բանից հետո, երբ սկսվեց աշխատանքը ներքին ֆունկցիոնալությունը առանձին գրադարան տեղափոխելու ուղղությամբ, որը կարող է օգտագործվել երկարատև գործընթացներում:
- Սկսվել է կազմվել հնացած ռեժիմների և գործառույթների ցանկ, որոնք նախատեսվում է դադարեցնել ապագայում։ Ակնկալվում է, որ հնացած ֆունկցիոնալությունը կհեռացվի Git 3.0 թողարկումից, որը կներառի փոփոխություններ, որոնք խախտում են հետընթաց համատեղելիությունը:
- «git for-each-ref» հրամանի շարունակական օպտիմիզացումը, որը ցուցադրում է պահեստի հղումների ցանկը: Օպտիմալացումը, որը միավորում է հղման զտման և ելքի ձևաչափման կարգավորիչները, այժմ կիրառվում է ոչ միայն չտեսակավորված ելքի համար, այլ նաև այն դեպքում, երբ նշված է «--sort» տարբերակը:
- Բարելավված «reftable» backend-ի իրականացումը բլոկային պահեստով, որպեսզի արդյունավետ կերպով պահվեն ճյուղերի և պիտակների հղումները պահեստում: Reftable-ը թույլ է տալիս զգալիորեն արագացնել որոնումը, կարդալը և գրելը պահեստներում շատ մեծ քանակությամբ հղումներով: Նոր տարբերակը դադարում է զանգահարել որոշ օժանդակ API-ներ՝ libgit գրադարանը հետագայում բացառելու համար build-ի կախվածությունը: Հիշողության տեղաբաշխման գործառույթներով վերադարձված սխալների ադապտիվ կառավարում (անբավարար հիշողությունն այլևս չի հանգեցնում խափանումների): Հղումների ստեղծման գործողություններն արագացվել են, իսկ հիշողության սպառումը կրճատվել է:
- Մասնակի կլոնավորման իրականացումը լուծել է այն խնդիրները, որոնք առաջացրել են պահեստի հանգույց և կոռուպցիա «git gc» հրամանը կատարելուց հետո:
- «git fetch» հրամանը կատարելիս եթե տեղական համակարգում չկա «refs/remotes/»: /HEAD» և մասնաճյուղի մյուս կողմում առկա առկայությունը, որին վերաբերում է HEAD, «refs/remotes/ /HEAD»-ն այժմ վերահղվում է այս թեմա: «refs/remotes/» համաժամացումը կառավարելու համար /HEAD» միացման մյուս կողմում գտնվող HEAD արժեքով, ավելացվել է հեռակառավարման կարգավորումը: .followRemoteHEAD»:
- Ավելացվեց «հեռավոր. .serverOption» նման հրամանի տող տարբերակ «-serverOption= «
- «git rebase --rebase-merges» հրամանը երաշխավորում է, որ ճյուղերի անունները հնարավորության դեպքում օգտագործվում են որպես պիտակներ:
- «git notes add» և «git notes append» հրամաններին ավելացրել է «-e» դրոշակ, որը բացում է նշումը GIT_EDITOR միջավայրի փոփոխականի միջոցով նշված արտաքին տեքստային խմբագրիչում:
- Բարելավված համատեղելիություն GCC 15-ի և C23 ստանդարտի հետ:
- libcURL-ի և Perl-ի հին տարբերակների աջակցությունը դադարեցվել է:
Source: opennet.ru
