Efter tre mÄnaders utveckling har Git 2.52, ett distribuerat kÀllkodshanteringssystem, slÀppts. Git stÄtar med hög prestanda och erbjuder icke-linjÀra utvecklingsfunktioner baserade pÄ förgrening och sammanslagning. För att sÀkerstÀlla historisk integritet och motstÄndskraft mot retroaktiva förÀndringar anvÀnder det implicit hashning av hela den tidigare historiken i varje commit, samt digitala signaturer för individuella taggar och commits. Git Àr licensierat under GPLv2+-licensen.
JÀmfört med den föregÄende utgÄvan innehÄller den nya versionen 637 Àndringar, bidragna av 94 utvecklare (varav 33 var nya inom Git-utveckling). Viktiga nya funktioner (1, 2, 3):
- Lade till kommandot "git last-modified" för att visa en lista över filer i en specifik version och de commits som senast Àndrade varje fil. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
- Lade till kommandot "git repo" för att utföra Ă„tgĂ€rder relaterade till att hĂ€mta information frĂ„n ett arkiv. TvĂ„ underkommandon, "git repo info" och "git repo structure", tillhandahĂ„lls, vilka visar information om arkivinstĂ€llningar och detaljer om arkivstrukturen (till exempel kan du ta reda pĂ„ antalet referenser och objekt i arkivet). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Arkivstruktur | VĂ€rde | | âââââââ | ââ | | * Referenser | | | * Antal | 1983 | | * Grenar | 4 | | * Taggar | 1125 | | * FjĂ€rrkontroller | 854 | | * Ăvriga | 0 | | | | | * NĂ„bara objekt | | | * Antal | 518955 | | * Commits | 77469 | | * TrĂ€d | 188865 | | * Blobs | 251631 | | * Taggar | 990 |
- Kommandot git refs har uppdaterats med tre underkommandon som förenar olika och överlappande lÄgnivÄoperationer pÄ referenser (git for-each-ref, git show-ref, git update-ref och git pack-refs):
- "git refs optimize" â optimering av referenslagringsbackend (liknande "git pack-refs").
- "git refs list" - visar en lista över alla referenser (liknande "git for-each-ref" eller "git show-ref").
- "git refs exists" â kontrollerar om en referens finns (analogt med "git show-ref --exists").
- Formatet för export och import av commit-historik har utökats för att stödja kryptografiska signaturer med bÄde SHA-1- och SHA-256-baserade objektidentifierare. Kommandot "git fast-import" stöder nu bearbetning av signerade taggar pÄ liknande sÀtt som signerade commits. Alternativen "--signed-commits=<mode>" och "--signed-tags=<mode>" har lagts till för att styra bearbetningen av signerade commits och taggar under import (lÀget kan vara verbatim, warn-verbatim, warn-stri, strip eller abort).
- Kommandot "git maintenance" stöder nu en ny "geometrisk" strategi ("git config set maintenance.strategy geometric"), vilket minskar underhÄllstiden för stora monorepositories. JÀmfört med den tidigare tillgÀngliga strategin, som anvÀnde logik liknande "git gc", undviker den nya strategin ompaketering av alla objekt och eliminerar resurskrÀvande operationer som att slÄ samman alla packfiler (dÀr det Àr möjligt utförs sammanslagningen i delar och utan att radera borttagna objekt).
- Lade till kommandot 'git sparse-checkout clean' för att göra det enklare att ÄterstÀlla arbetskatalogens tillstÄnd genom att ta bort filer som inte matchar den nya definitionen av sparse-checkout och som inte ska finnas i den lokala kopian enligt de nuvarande instÀllningarna för sparse-checkout.
- För att minska komplexiteten i kodbasen och förenkla underhÄllet utfördes en omfaktorering för att minska anvÀndningen av den globala variabeln the_repository.
- AnvÀndningen av Bloom-filter, ett probabilistiskt ramverk för att kontrollera medlemskap i mÀngder som möjliggör falska positiva resultat av saknade element men förhindrar att befintliga element utelÀmnas, har utökats. Bloom-filter anvÀnds nu för att snabba upp sökningar i Àndringshistoriken nÀr jokertecken anges i filsökvÀgar, till exempel "foo/bar/*/baz".
- Prestandan för kommandot "git describe" har ökats med upp till 30 % tack vare anvÀndningen av en prioritetskö. Referensnamnsbyten i "git remote rename" har accelererats. AnvÀndningen av index har utökats i "git ls-files". Kommandot "git log -L" har accelererats avsevÀrt genom att eliminera onödiga trenivÄjÀmförelser vid bearbetning av merge commits. Optimeringar har gjorts i xdiff-biblioteket.
- En valfri Rust-implementering av vissa interna funktioner, sÄsom kodning och avkodning av heltal med variabel lÀngd, har introducerats. Rust-kod anvÀnds inte som standard och krÀver att byggflaggan WITH_RUST Àr aktiverad. I framtiden förvÀntas mer betydande interna Git-komponenter skrivas om i Rust, och Rust kommer att lÀggas till som ett obligatoriskt byggberoende i Git 3.0.
- Listan över viktiga Àndringar som kommer att tillÀmpas i Git 3.0-grenen har uppdaterats. I Git 3.0 kommer standardinstÀllningen init.defaultBranch att Àndras till "main", vilket innebÀr att standardgrenen i repositorier som skapats med kommandot "git init" kommer att heta "main" istÀllet för "master". En övergÄng till SHA-256-baserade objektidentifierare vid initialisering av nya repositorier noteras ocksÄ. För att förenkla portabiliteten mellan repositorier med SHA-1- och SHA-256-baserade objektidentifierare finns det nu möjlighet att pusha till och hÀmta frÄn ett repository med hjÀlp av en hashingalgoritm och ett repository med en annan hashingalgoritm.
KĂ€lla: opennet.ru
