Presenteras utgÄvan av det distribuerade systemet för hantering av kÀlltexter Git 2.54. Git kÀnnetecknas av hög prestanda och tillhandahÄller verktyg för icke-linjÀr utveckling baserade pÄ grening och sammanslagning av grenar. För att sÀkerstÀlla integriteten hos historien och motstÄndskraften mot förÀndringar "i efterhand" anvÀnds implicit hashning av hela den tidigare historien i varje commit samt verifiering med digitala signaturer av utvecklare för enskilda taggar och commits. Koden för Git sprids under GPLv2+.
JÀmfört med den tidigare versionen har den nya versionen antagit 770 Àndringar, förberedda av 137 utvecklare (66 deltog för första gÄngen i utvecklingen av Git).
-
Kommandot "git history" har implementerats, vilket ger experimentella möjligheter för att skriva om Àndringshistoriken, enklare och sÀkerare att anvÀnda Àn att Äterbasera commits med kommandot git rebase. TvÄ operationer tillhandahÄlls:
- git history reword för att skriva om meddelandet i den angivna commit utan att Àndra arbetskatalogen och indexet (förutom noteringen, som förblir oförÀndrad). Till exempel för att rÀtta till ett skrivfel.
- git history split för interaktiv uppdelning av den angivna commit i tvÄ olika commits med flytt av valda delar frÄn den ursprungliga commit till en ytterligare commit.
I framtida versioner förvÀntas ytterligare kommandon lÀggas till: git history fixup för att korrigera en commit, git history drop för att ta bort en commit, git history reorder för att Àndra ordningen pÄ commits och git history squash för att slÄ samman commits.
-
En ny metod för att definiera hanterare har implementerats (hook) i konfigurationsfiler. IstĂ€llet för att placera skript med hanterare i katalogen .git/hooks i varje repository kan kommandon för att anropa hanterarna nu stĂ€llas in direkt i konfigurationsfilerna. InstĂ€llningar kan knytas till repositoryn eller anges i konfigurationsfiler som gĂ€ller för alla repositorys (/etc/gitconfig) eller anvĂ€ndarens repository (~/.gitconfig). Det Ă€r möjligt att koppla flera hanterare till en hĂ€ndelse. Skript frĂ„n .git/hooks kommer fortfarande att anropas, men de körs efter hanterarna frĂ„n konfigurationsfilerna. För att visa listan över hanterare bör kommandot git hook list anvĂ€ndas, och för att selektivt inaktivera anrop av hanterare â instĂ€llningen hook..enabled = false:
[hook "linter"] event = pre-commit command = ~/bin/linter âcpp20 [hook "no-leaks"] event = pre-commit command = ~/bin/leak-detector $ git hook list pre-commit global linter ~/bin/linter âcpp20 local no-leaks ~/bin/leak-detector
- I kommandot «git maintenance» Àr standardstrategin geometric (git config set maintenance.strategy geometric), vilket gör att underhÄllstiden för stora monorepositories minskar. JÀmfört med den tidigare strategin, som anvÀnde logik som i kommandot git gc, undviker den nya strategin att ompacka alla objekt och utesluter onödigt resurskrÀvande operationer, som att slÄ samman alla pack-filer (dÀr det Àr möjligt görs sammanslagning i delar och utan rensning av borttagna objekt).
- Objektdatabasen (ODB) och relaterade API:er har översatts till en ny arkitektur baserad pÄ anvÀndningen av pluggbara backend. Den genomförda omstruktureringen abstraherar lagringsformatet för objekt och gör det i framtiden möjligt att implementera funktioner som alternativa backends och objektformat, till exempel för mer effektiv lagring av stora binÀra filer eller för att optimera arbetet med stora git-hosting.
- I kommandot «git repo-struktur», som visar information om repository-strukturen, ger inte bara en total storlek utan visar ocksÄ de största objekten av varje typ, vilket gör att storhetsbedömningen kan genomföras utan att anvÀnda externa verktyg. git-sizer.
$ git repo struktur ⊠| * Största objekt | | | * Commits | | | * Maximal storlek [1] | 17.23 KiB | | * Maximal förÀldrar [2] | 10 | | * TrÀd | | | * Maximal storlek [3] | 58.85 KiB | | * Maximal poster [4] | 1.18 k | | * Blobs | | | * Maximal storlek [5] | 1019.51 KiB | | * Taggar | | | * Maximal storlek [6] | 7.13 KiB |
- I kommandot «git replay», anvĂ€nds istĂ€llet för git rebase för att Ă„terskapa historik pĂ„ servern utan arbetskatalog, inkluderar som standard atomĂ€r uppdatering av referenser (istĂ€llet för att skriva ut en lista med kommandon update-ref för manuell utförande), implementerad alternativ ârevert för att Ă„terstĂ€lla Ă€ndringar frĂ„n en rad commits, sĂ€kerstĂ€llt att resultatande tomma commits stryks och möjligheten att Ă„terskapa historik Ă€nda till rotcommit.
- Vid «git rev-list» och liknande kommandon har tillagts ett alternativ âmaximal-only för att endast visa commits som inte Ă€r tillgĂ€ngliga via andra commits.
- I kommandot «git repo info» har alternativet âkeys lagts till för att skriva ut en lista över alla kĂ€nda nycklar.
- I kommandot «git add -p» vid navigering mellan kodblock med hjĂ€lp av tangenterna «J» och «K» sĂ€kerstĂ€lls markering av redan godkĂ€nda och förbisegna block. Alternativet âno-auto-advance har lagts till för att stĂ€nga av automatisk övergĂ„ng till nĂ€sta fil, sĂ„ att man kan Ă„tervĂ€nda till tidigare filer innan commit.
- WebgrÀnssnittet «gitweb» har optimerats för mobilanvÀndning.
- I kommandot «git apply âdirectory» ger normalisering av filvĂ€gar, som .\/un\/..\/normalized\/path innan anvĂ€ndning.
- Möjligheten att lÀgga till egna undermetoder har dokumenterats genom att placera filer git-<cmd> i katalogen med körbara filer.
- I kommandot «git send-email» har lagt till stöd för klientcertifikat.
- För kommandot «git status» har instÀllningen status.compareBranches implementerats, genom vilken man kan ange brancher som den aktuella branchen ska jÀmföras med:
[status] compareBranches = @{upstream} @{push}
- Vid «git rebase» har alternativet âtrailer lagts till för att förenkla tillĂ€gget av metadata till alla commits:
git rebase âtrailer "Reviewed-by: Test <test@example.com>"`
- I kommandot «git fast-import» har lagt till möjligheten att ersÀtta signaturer för commits som blivit ogiltiga efter import.
- Stöd för sammanslagning (compaction) av flerpaketsindex MIDX (multi-pack index) har lagts till, dÀr smÄ MIDX-indexlager med information om objekts tillgÀnglighet samt relaterade bitmap-filer slÄs samman, vilket minskar antalet ackumulerade lager i etablerade arkiv.
- I git backfill-teamet har möjligheten att ange revisioner (kommittÀras) och sökvÀgsmasker (pathspec) för att begrÀnsa de delar av Àndringshistoriken som laddas ner introducerats:
git backfill main~100..main git backfill â â*.câ
- Alternativa former av kommandot git config list har lagts till â git config -l och git config âlist.
- AnvÀndning av icke-ASCII-tecken i kommandots aliasnamn som anges i konfigurationsfilen har tillÄtits:
[alias "get"] command = fetch
- Visningen av signaturer vars GPG-nycklar har löpt ut, men som var giltiga vid tidpunkten för kommittens signering, har Àndrats. SÄdana signaturer visas nu som giltiga med en anmÀrkning om nyckelns utgÄng (tidigare markerades de i röd fÀrg, vilket gav intryck av felaktighet).
- Vid Ă„tkomst till arkiv via HTTP har hanteringen av felkod 429 (För mĂ„nga förfrĂ„gningar) sĂ€kerstĂ€llts. FörfrĂ„gningar som avslutas med denna typ av fel betraktas nu inte som ett fatalt problem, utan som ett tillfĂ€lligt fel som bör upprepas efter en tid. Fördröjningen före Ă„terförfrĂ„gan stĂ€lls in via alternativet http.retryAfter, antalet upprepningar â http.maxRetries, och vĂ€ntetiden â http.maxRetryTime.
KĂ€lla: linux.org.ru
