Presentert utgjeving av eit distribuert system for versjonskontroll Git 2.54. Git skiller seg ut med hÞg ytelse og gir verktÞy for ikkje-lineÊr utvikling basert pÄ greinings- og samanslÄingsmetodar. For Ä sikre integriteten til historikken og motstandsdyktigheit mot 'tilbakeslag', blir det brukt implicitt hashing av heile tidlegare historikk i kvar commit, samt digital signering av utviklarar for enkelte taggar og commits. Koden til Git distribueres under GPLv2+-lisens.
Samanlikna med den tidlegare utgÄva inkluderer den nye versjonen 770 endringar, laga med deltaking av 137 utviklarar (66 deltok for fyrste gong i utviklinga av Git).
-
Det er implementert ein kommando «git history», som gir eksperimentelle moglegheiter for Ä omskrive endringshistorikken, enklare og sikrare Ä bruke enn Ä rebasa commits med git rebase. Det blir tilbydd to operasjonar:
- git history reword for Ä omskrive meldinga i den spesifiserte commit utan Ä endre arbeidsverktÞyet og indeksen (bortsett frÄ merknaden, resten forblir uendra). Til dÞmes, for Ä rette ein skrivefeil.
- git history split for interaktiv deling av den spesifiserte commit i to ulike commits ved Ä flytte valde delar frÄ den opphavlege commit til ein ekstra commit.
I framtidige utgÄver er det forventa Ä legge til fleire kommandoar: git history fixup for Ä rette ein commit, git history drop for Ä fjerne ein commit, git history reorder for Ä endre rekkefylgje av commits og git history squash for Ä slÄ saman commits.
-
Ein ny metode for Ä definere handterar har blitt implementert (hook) i konfigurasjonsfiler. I stedet for Ä plassere skripter med hÄndterere i katalogen .git/hooks i hver enkelt repository, kan nÄ kommandoene for Ä kalle hÄndtererne spesifiseres direkte i konfigurasjonsfilene. Innstillingene kan knyttes til et repository eller angis i konfigurasjonsfiler som gjelder for alle repositories (/etc/gitconfig) eller brukerens repositories (~/.gitconfig). Det er mulig Ä knytte flere hÄndterere til én hendelse. Skriptene fra .git/hooks vil fortsatt bli kalt, men kjÞres etter hÄndtererne fra konfigurasjonsfilene. For Ä se listen over hÄndterere bÞr man bruke kommandoen git hook list, og for Ä selektivt deaktivere kallet til hÄndterere brukes innstillingen 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 kommandoen «git maintenance» er den geometriske strategien som standard aktivert (git config set maintenance.strategy geometric), som reduserer vedlikeholdstiden for store monorepositories. I forhold til den tidligere strategien, som brukte logikken fra git gc-kommandoen, unngÄr den nye strategien Ä pakke om alle objektene og ekskluderer ressurskrevende operasjoner, som Ä slÄ sammen alle pakke-filer (sammenfÞyning skjer i deler og uten opprydning av slettede objekter nÄr det er mulig).
- Objekt-databasen (ODB) og tilknyttede API-er er overfÞrt til en ny arkitektur, basert pÄ bruken av pluggbare backend-er. Restruktureringen abstraherer lagringsformatet for objektene og vil i fremtiden muliggjÞre funksjoner som alternative backend-er og objektformat, for eksempel for mer effektiv lagring av store binÊrfiler eller for Ä optimalisere driften av store git-hosting.
- I kommandoen «git repo struktur», som viser informasjon om repositoriets struktur, har fÄtt utvidet visning av ikke bare total stÞrrelse, men ogsÄ de stÞrste objektene av hver type, noe som gjÞr at man kan vurdere stÞrrelse uten Ä bruke eksterne verktÞy. git-sizer.
$ git repo structure ⊠| * StÞrste objekter | | | * Commits | | | * Maksimal stÞrrelse [1] | 17.23 KiB | | * Maksimal foreldre [2] | 10 | | * Trees | | | * Maksimal stÞrrelse [3] | 58.85 KiB | | * Maksimal oppfÞringer [4] | 1.18 k | | * Blobs | | | * Maksimal stÞrrelse [5] | 1019.51 KiB | | * Tags | | | * Maksimal stÞrrelse [6] | 7.13 KiB |
- I kommandoen «git replay», brukt i stedet for git rebase for Ă„ gjenskape historien pĂ„ serveren uten arbeidskatalog, inkluderer en atomĂŠr oppdatering av referanser som standard (i stedet for Ă„ skrive ut oppdateringsreferansene til manuelt utfĂžrelse), muligheten ârevert for Ă„ annulere endringer fra en serie commits, sikrer at resulterende tomme commits blir forkastet, og muligheten for Ă„ gjenskape historien helt tilbake til rotcommit.
- I «git rev-list» og lignende kommandoer er det lagt til et alternativ âmaximal-only for Ă„ vise bare commits som ikke er tilgjengelige via andre commits.
- I kommandoen «git repo info» er det lagt til et alternativ âkeys for Ă„ vise en liste over alle kjente nĂžkler.
- I kommandoen «git add -p» ved navigering mellom kodemoduler med tastene «J» og «K» er det mulig Ă„ merke allerede godkjente og oversette moduler. Et alternativ âno-auto-advance er lagt til for Ă„ deaktivere automatisk overgang til neste fil, slik at du kan gĂ„ tilbake til tidligere filer fĂžr commit.
- Det har blitt optimalisert webgrensesnittet «gitweb» for bruk fra mobile enheter.
- I kommandoen «git apply âdirectory» fĂžr bruk, er filstier som .\/un\/..\/normalized\/path normalisert.
- Dokumentert muligheten til Ă„ legge til egne underkommandoer ved Ă„ plassere filene git-<cmd> i katalogen med utfĂžrbare filer.
- I kommandoen «git send-email» har lagt til stÞtte for klientsertifikater.
- For kommandoen «git status» er det implementert en innstilling status.compareBranches, hvor du kan spesifisere grenene som den nÄvÊrende grenen skal sammenlignes med:
[status] compareBranches = @{upstream} @{push}
- I «git rebase» har fĂ„tt alternativet âtrailer for Ă„ forenkle tillegg av metadata til alle commits:
git rebase âtrailer "Reviewed-by: Test <test@example.com>"`
- I kommandoen «git fast-import» har fÄtt muligheten til Ä erstatte signaturer for commits som blitt ugyldige etter import.
- StÞtta for pakking (compaction) av multifilindekser MIDX (multi-pack index) er lagt til, der smÄ lag av MIDX-indekser som inneholder informasjon om tilgjengelighet av objekter og tilknyttede bitmap-filer blir samlet, noe som reduserer antallet oppsamlede lag i gamle repositorier.
- I git backfill-teamet er det implementert mulighet for Ă„ spesifisere revisjoner (kommitintervaller) og sti-maske (pathspec) for Ă„ begrense hvilke deler av endringshistorikken som lastes ned:
git backfill main~100..main git backfill -- '*.c'
- Alternative former for Ă„ kalle kommandoen git config list er lagt til â git config -l og git config --list.
- Bruk av ikke-ASCII-tegn i navnene pÄ kommandoaliasene som er angitt i konfigurasjonsfilen er tillatt:
[alias "hent"] command = fetch
- Vise av signaturer som har utlÞpt GPG-nÞkler, men som var gyldige pÄ tidspunktet for signering av commit, er endret. Slike signaturer vises nÄ som gyldige med merknad om at nÞkkelen er foreldet (tidligere ble de uthevet i rÞdt, noe som skapte inntrykk av at de var feilaktige).
- NĂ„r man prĂžver Ă„ fĂ„ tilgang til repositorier via HTTP, er behandling av feilkode 429 (For mange forespĂžrsel) sikret. ForespĂžrsel som resulterer i slik feil vurderes nĂ„ ikke som en fatalt problem, men som en midlertidig feil som bĂžr gjentas etter en viss tid. Forsinkelsen fĂžr gjentakelse settes gjennom alternativet http.retryAfter, antall gjentakelser â http.maxRetries, og ventetiden â http.maxRetryTime.
Kilde: linux.org.ru
