Udgivelsen af versionskontrolsystemet Git 2.54

Udgangen af den distribuerede versionkontrolsystem Git 2.54 er blevet præsenteret. Git adskiller sig ved sin høje ydeevne og tilbyder værktøjer til ikke-lineær udvikling baseret på forgrening og sammensmeltning af grene. For at sikre integriteten af historikken og modstandsdygtighed over for ændringer "bagud i tid" anvendes implicit hashing af hele den tidligere historik i hver commit samt verifikation via digitale underskrifter af udviklerne af specifikke tags og commits. Git-koden distribueres under GPLv2+ licensen.

Sammenlignet med den tidligere version er der i den nye version foretaget 770 ændringer, der er blevet forberedt med deltagelse af 137 udviklere (66 deltager for første gang i udviklingen af Git). De vigtigste nyheder inkluderer:

  • Der er implementeret en kommando "git history", som tilbyder eksperimentelle muligheder for at omskrive ændringshistorikken, som er lettere og sikrere at bruge end at rebase commits med kommandoen "git rebase". Der tilbydes to operationer:
    • "git history reword " til at omskrive beskeden i den angivne commit uden at ændre arbejdsområdet og indekset (bortset fra noten, forbliver resten uændret). For eksempel til at rette en tastefejl.
    • "git history split " til interaktivt at opdele den angivne commit i to forskellige commits ved at flytte valgte dele fra den oprindelige commit til en ekstra commit.

    I fremtidige versioner forventes det, at der tilføjes flere kommandoer: "git history fixup" til at rette en commit, "git history drop" til at slette en commit, "git history reorder" til at ændre rækkefølgen af commits og "git history squash" til at kombinere commits.

  • En ny metode til at bestemme håndteringsfunktioner (hook) i konfigurationsfiler er implementeret. I stedet for at placere scripts med håndteringsfunktioner i mappen «.git/hooks» i hver repository, kan kommandoer til kald af håndteringsfunktioner nu specificeres direkte i konfigurationsfilerne. Indstillinger kan knyttes til repositoryen eller angives i konfigurationsfiler, der gælder for alle repositories ( /etc/gitconfig) eller brugerens repositories (~/.gitconfig). Det er muligt at knytte flere håndteringsfunktioner til en enkelt hændelse. Scripts fra «.git/hooks» fortsætter stadig med at blive kaldt, men køres efter håndteringsfunktionerne fra konfigurationsfilerne. For at se en liste over håndteringsfunktioner skal kommandoen «git hook list» anvendes, og for selektivt at deaktivere kald af håndteringsfunktioner skal indstillingen «hook..enabled = false» bruges. [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 strategien «geometric» («git config set maintenance.strategy geometric») som standard aktiveret, hvilket reducerer vedligeholdelsestiden for store monorepositories. I forhold til den tidligere anvendte strategi, der bruger logik som i kommandoen «git gc», undgår den nye strategi at genpakke alle objekter og udelukker unødigt ressourcekrævende operationer, såsom at fusionere alle pack-filer (hvor det er muligt, foretages fusionen i dele og uden oprydning af slettede objekter).
  • Objekt-databasen (ODB) og tilknyttede API'er er blevet opgraderet til en ny arkitektur baseret på brugen af plug-in-backends. Den gennemførte omstrukturering abstraherer objektlagringsformatet og muliggør i fremtiden implementering af funktioner såsom alternative backends og objektformater, f.eks. til mere effektiv opbevaring af store binære filer eller til optimering af driften af store git-hosting-udbydere.
  • I kommandoen «git repo structure», der giver information om repository-strukturen, er der sikre visninger ikke kun af den samlede størrelse, men også af de største objekter af hver type, hvilket gør det muligt at vurdere størrelsen uden at bruge tredjepartsværktøjet git-sizer. $ git repo structure … | * Største objekter | | | * Commits | | | * Maksimal størrelse [1] | 17.23 KiB | | * Maksimale forældre [2] | 10 | | * Træer | | | * Maksimal størrelse [3] | 58.85 KiB | | * Maksimale indgange [4] | 1.18 k | | * Blobs | | | * Maksimal størrelse [5] | 1019.51 KiB | | * Tags | | | * Maksimal størrelse [6] | 7.13 KiB |
  • I kommandoen «git replay», der anvendes i stedet for «git rebase» til at genskabe historien på serveren uden et arbejdsbibliotek, er atomisk opdatering af referencer aktiveret som standard (i stedet for at udskrive en liste over update-ref-kommandoer til manuel udførelse), en «—revert» mulighed tilføjet for at annullere ændringer fra en række commits, der er sikret ved at frasortere resulterende tomme commits, og muligheden for at genskabe historien helt tilbage til roden af commit-træet er blevet tilføjet.
  • I «git rev-list» og lignende kommandoer er der tilføjet en «—maximal-only» mulighed til kun at vise commits, der ikke kan nås af andre commits.
  • I kommandoen «git repo info» er der tilføjet en «—keys» mulighed for at udskrive en liste over alle kendte nøgler.
  • I kommandoen «git add -p» er der ved navigationen mellem kodeblokke med tasterne «J» og «K» sikret markering af allerede godkendte og oversete blokke. Der er tilføjet en «—no-auto-advance» mulighed for at deaktivere automatisk overgang til den næste fil, så man kan vende tilbage til tidligere filer før commit.
  • Der er optimeret webgrænsefladen «gitweb» til brug på mobile enheder.
  • I kommandoen «git apply —directory» sikres normalisering af filstier såsom «.\/un\/..\/normalized\/path» før brug.
  • Muligheden for at tilføje egne underkommandoer er dokumenteret ved at placere filer «git-<cmd>» i mappen med eksekverbare filer.
  • I kommandoen «git send-email» er der tilføjet støtte til klientcertifikater.
  • For kommandoen «git status» er der implementeret en indstilling «status.compareBranches», hvorigennem man kan angive de grene, som den nuværende gren skal sammenlignes med. [status] compareBranches = @{upstream} @{push}
  • I «git rebase» er der tilføjet en «—trailer» mulighed for lettere at tilføje metadata til alle commits. git rebase —trailer «Reviewed-by: Test <test@example.com>»
  • Muligheden for at erstatte signaturer for commits, der er blevet ugyldige efter import, er blevet tilføjet til teamet "git fast-import".
  • Understøttelse af komprimering (compaction) af multi-pack indekser (MIDX) er blevet tilføjet, hvor små MIDX-indekslag sammenlægges med information om tilgængelighed af objekter og de tilknyttede bitmap-filer, hvilket reducerer antallet af akkumulerede lag i ældre repositories.
  • I kommandoen "git backfill" er der implementeret muligheden for at angive revisioner (commitrækkevidder) og sti-mønstre (pathspec) for at begrænse de dele af ændringshistorikken, der indlæses. git backfill main~100..main git backfill — ‘*.c’
  • Alternative former for at kalde kommandoen "git config list" er blevet tilføjet — "git config -l" og "git config —list".
  • Der er givet tilladelse til at bruge ikke-ASCII-tegn i navnene på kommand aliaser, der er angivet i konfigurationsfilen. [alias "fetch"] command = fetch
  • Visningen af signaturer, hvor GPG-nøglerne er udløbet, men som var gyldige på tidspunktet for commit-signeringen, er ændret. Sådanne signaturer vises nu som gyldige med en note om nøglets udløb (tidligere blev de markeret med rødt, hvilket gav indtryk af, at de var ugyldige).
  • Når der tilgås repositories via HTTP, er der sørget for behandling af fejl med koden 429 (Too Many Requests). Anmodninger, der er afsluttet med denne fejl, betragtes nu ikke som et fatalt problem, men som en midlertidig fejl, der bør gentages efter lidt tid. Forsinkelsen før gentagelse angives via indstillingen "http.retryAfter", antallet af gentagelser — "http.maxRetries", ventetiden — "http.maxRetryTime".

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster