UtgÄvan av det distribuerade systemet för hantering av kÀllkoder Git 2.54 har presenterats. Git kÀnnetecknas av hög prestanda och erbjuder verktyg för icke-linjÀr utveckling som baseras pÄ gren- och sammanslagningsfunktioner. För att sÀkerstÀlla integriteten i historiken och motstÄndskraft mot "bakÄtriktade" Àndringar anvÀnds implicit hashning av hela den tidigare historiken i varje commit, samt verifiering med digitala signaturer av utvecklare för specifika taggar och commits. Git-koden distribueras under GPLv2+-licensen.
JÀmfört med den tidigare versionen har 770 Àndringar antagits i den nya versionen, förberedda med deltagande frÄn 137 utvecklare (66 deltog för första gÄngen i utvecklingen av Git). Huvudnyheterna Àr:
- Kommandot "git history" har implementerats, vilket erbjuder experimentella funktioner för att skriva om historiken av Àndringar, enklare och sÀkrare att anvÀnda Àn att rebasera commits med kommandot "git rebase". TvÄ operationer erbjuds:
- "git history reword " för att skriva om meddelandet i den angivna commiten utan att Àndra arbetskatalogen och indexet (förutom anmÀrkningen, som förblir oförÀndrad). Till exempel för att rÀtta till ett stavfel.
- "git history split " för att interaktivt dela den angivna commiten i tvÄ olika commits med flytt av valda delar frÄn den ursprungliga commiten till en extra commit.
I framtida utgÄvor 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Ä commitar och "git history squash" för att slÄ samman commits.
- En ny metod för att definiera handlare (hook) i konfigurationsfiler har implementerats. IstĂ€llet för att placera skript med handlare i katalogen «.git/hooks» i varje repository, kan kommandon för att kalla handlare nu definieras direkt i konfigurationsfiler. InstĂ€llningar kan kopplas till repositoryn eller anges i konfigurationsfiler som gĂ€ller för alla repositories (/etc/gitconfig) eller anvĂ€ndarens repositories (~/.gitconfig). Det Ă€r möjligt att koppla flera handlare till samma hĂ€ndelse. Skript frĂ„n «.git/hooks» fortsĂ€tter fortfarande att köras, men aktiveras efter handlare frĂ„n konfigurationsfiler. För att se listan över handlare ska kommandot «git hook list» anvĂ€ndas, och för att selektivt inaktivera anropet av en handlare â 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» anvÀnds som standard strategin «geometric» («git config set maintenance.strategy geometric»), vilket minskar underhÄllstiden för stora monorepositories. JÀmfört med den tidigare strategin som anvÀnde logik som i kommandot «git gc», undviker den nya strategin att packa om alla objekt och utesluter överdrivet resurskrÀvande operationer, sÄsom att sammanfoga alla pack-filer (dÀr det Àr möjligt görs sammanslagningen i delar och utan att stÀda upp borttagna objekt).
- Objekt databasen (ODB) och tillhörande API:er har övergÄtt till en ny arkitektur baserad pÄ anvÀndning av plugin-bakÀndar. Den genomförda omstruktureringen abstraherar lagringsformatet för objekt och kommer i framtiden att möjliggöra funktioner sÄsom alternativa bakÀndar och objektformat, till exempel för mer effektiv lagring av stora binÀrfiler eller för att optimera driften av stora git-hosting-tjÀnster.
- I kommandot "git repo structure" visas information om struktur av repositoriet, inklusive den totala storleken och de största objekten av varje typ, vilket gör det möjligt att uppskatta storleken utan att anvÀnda verktyget git-sizer. $ git repo structure ⊠| * 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", som anvĂ€nds istĂ€llet för "git rebase" för att Ă„terskapa historik pĂ„ servern utan arbetskatalog, ingĂ„r som standard atomĂ€r uppdatering av referenser (istĂ€llet för att visa en lista av kommandon update-ref för manuell körning), en option "ârevert" för att Ă„terstĂ€lla Ă€ndringar frĂ„n en serie commits, och möjligheten att Ă„terskapa historiken ner till rotcommit.
- I "git rev-list" och liknande kommandon har optionen "âmaximal-only" lagts till för att visa endast commits som inte kan nĂ„s av andra commits.
- I kommandot "git repo info" har optionen "âkeys" lagts till för att visa en lista över alla kĂ€nda nycklar.
- I kommandot "git add -p" under navigering mellan kodblock med tangenterna "J" och "K" har mĂ€rkning för redan godkĂ€nda och hoppade block införts. En option "â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.
- WebbgrÀnssnittet "gitweb" har optimerats för att fungera med mobila enheter.
- I kommandot "git apply âdirectory" har normalisering av filvĂ€gar, sĂ„som ".\/un\/..\/normalized\/path", sĂ€kerstĂ€llts innan anvĂ€ndning.
- Möjligheten att lÀgga till egna undermmand Àr dokumenterad genom att placera filer "git-<cmd>" i katalogen med körbara filer.
- I kommandot "git send-email" har stöd för klientcertifikat lagts till.
- För kommandot "git status" har instÀllningen "status.compareBranches" genomförts, dÀr man kan ange grenar för att jÀmföra den aktuella grenen. [status] compareBranches = @{upstream} @{push}
- I "git rebase" har optionen "âtrailer" lagts till för att förenkla tillĂ€gg av metadata till alla commits. git rebase âtrailer "Reviewed-by: Test <test@example.com>"
- Kommandon "git fast-import" har fÄtt möjligheten att ersÀtta signaturer för commits som blivit ogiltiga efter import.
- Stödet för komprimering (compaction) av flerpaketsindex MIDX (multi-pack index) har lagts till, dÀr smÄ lager av MIDX-index som innehÄller information om tillgÀngliga objekt och relaterade bitmap-filer kombineras, vilket minskar antalet ackumulerade lager i gamla repository.
- I kommandot "git backfill" har möjligheten att ange revisioner (commit-intervall) och sökvÀgsmasker (pathspec) för att begrÀnsa de laddade delarna av historik implementerats. 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 namnen pÄ kommandots aliaser som anges i konfigurationsfilen tillÄts. [alias "fetch"] 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 anrop av repository via HTTP har hantering av felkod 429 (För mÄnga förfrÄgningar) införts. FörfrÄgningar som avslutats med detta fel betraktas nu inte som ett fatalt problem utan ett temporÀrt fel, dÀr operationen bör upprepas efter en tid. Fördröjningen innan Äterförsök anges genom alternativet "http.retryAfter", antalet försök - "http.maxRetries", vÀntetiden - "http.maxRetryTime".
KĂ€lla: opennet.ru
