Udgivelse af Git versionsstyringssystem 2.52

Efter tre måneders udvikling er version 2.52 af det distribuerede system til styring af kildekoder Git blevet offentliggjort. Git udmærker sig ved sin høje ydeevne og tilbyder værktøjer til ikke-lineær udvikling baseret på grene og sammenlægning. For at sikre integriteten af historien og modstandsdygtigheden over for 'tilbagevirkende' ændringer anvendes implicit hashing af hele den tidligere historie i hver commit samt digitale signaturer fra udviklere til identifikation af specifikke tags og commits. Git-koden distribueres under GPLv2+-licensen.

I forhold til den tidligere version er der i denne nye version accepteret 637 ændringer, der er foretaget med deltagelse af 94 udviklere (33 deltager for første gang i udviklingen af Git). De vigtigste nyheder (1, 2, 3):

  • Der er tilføjet kommandoen «git last-modified» for at vise en liste over filer i den angivne revision og commits, der har foretaget de seneste ændringer i hver af disse filer. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
  • Der er tilføjet kommandoen «git repo» for at udføre handlinger relateret til at hente information fra et repository. To underkommander er blevet foreslået — «git repo info» og «git repo structure», som viser information om repository-indstillingerne og oplysninger om repository-strukturen (for eksempel kan man få at vide, hvor mange references og objekter der er i repositoryet). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Repository struktur | Værdi | | ——————— | —— | | * References | | | * Antal | 1983 | | * Branches | 4 | | * Tags | 1125 | | * Remotes | 854 | | * Andre | 0 | | | | | * Tilgængelige objekter | | | * Antal | 518955 | | * Commits | 77469 | | * Trees | 188865 | | * Blobs | 251631 | | * Tags | 990 |
  • Tre underkommander er blevet tilføjet til kommandoen «git refs», som forener de fragmenterede og overlappende lavniveau operationer på references (git for-each-ref, git show-ref, git update-ref og git pack-refs):
    • «git refs optimize» — optimering af backend-opbevaringen af references (analogt med «git pack-refs»).
    • «git refs list» — viser en liste over alle references (analogt med «git for-each-ref» eller «git show-ref»).
    • «git refs exists» — tjekker eksistensen af en reference (analogt med «git show-ref —exists»).
  • Formatet til eksport eller import af commit-historier er blevet udvidet med muligheden for at arbejde med kryptografiske signaturer, der bruger både SHA-1- og SHA-256-baserede objektidentifikatorer. Kommandoen «git fast-import» understøtter nu behandlingen af signerede tags analogt med signerede commits. Der er tilføjet indstillingerne «—signed-commits=<tilstand>» og «—signed-tags=<tilstand>» til styring af behandlingen af signerede commits og tags under importen (tilstanden kan være verbatim, warn-verbatim, warn-stri, strip eller abort).
  • Kommandoen «git maintenance» har fået tilføjet support til den nye strategi «geometric» («git config set maintenance.strategy geometric»), som reducerer vedligeholdelsestiden for store monorepositorier. I forhold til den tidligere strategi, der bruger logikken fra kommandoen «git gc», undgår den nye strategi at repacke alle objekter og undgår ressourcetunge operationer, såsom sammensmeltning af alle pack-filer (sammensmeltningen sker i mulige bidder og uden oprydning af slettede objekter).
  • Der er tilføjet kommandoen «git sparse-checkout clean» for at forenkle gendannelsen af arbejdsbibliotekets tilstand ved at fjerne filer, der ikke stemmer overens med den nye definition af sparse-checkout, og som ikke bør være til stede i den lokale kopi i henhold til de nuværende sparse-checkout-parametre.
  • For at fjerne kompleksiteter fra kodebasen og forenkle vedligeholdelsen er der blevet udført en refaktorering for at reducere brugen af den globale variabel the_repository.
  • Brugen af Bloom-filtre, en probabilistisk struktur til at kontrollere medlemskab i en mængde, er blevet udvidet. Bloom-filtre tillader falske positive, men udelukker overspring af eksisterende elementer. Bloom-filtre anvendes nu for at fremskynde søgningen i ændringshistorikken ved angivelse af masker i filstier, for eksempel «foo/bar/*/baz».
  • Ydelsen af kommandoen «git describe» er blevet forbedret med op til 30% takket være brugen af prioritetskøer. Operationerne til omdøbning af referencer i «git remote rename» er blevet accelereret. I «git ls-files» er brugen af indekser blevet udvidet. Kommandoen «git log -L» er blevet betydeligt hurtigere ved at undgå unødvendige tre-niveau-sammenligninger under behandling af merge commits. Der er foretaget optimeringer i xdiff-biblioteket.
  • Der er mulighed for at bruge implementationer i Rust for nogle interne funktioner, såsom kodning og dekodning af variabel længde heltalsværdier. Som standard bruges Rust-koden ikke, og for at aktivere det kræver det, at byggeflaget WITH_RUST angives. I fremtiden forventes det, at flere betydningsfulde interne komponenter i Git vil blive omskrevet i Rust, og at Rust vil blive en af de obligatoriske byggeafhængigheder i Git 3.0.
  • Listen over bagudkompatible ændringer, der vil blive anvendt i Git 3.0-grenen, er blevet opdateret. I Git 3.0 er det besluttet at ændre standardindstillingen for init.defaultBranch til "main", hvilket betyder, at i de repositories, der oprettes med kommandoen "git init", vil standardgrenen blive navngivet "main" i stedet for "master". Derudover bemærkes det, at der som standard vil være et skift til objekt-id'er baseret på SHA-256 hashing-algoritmen ved initialisering af nye repositories. For at lette portabiliteten mellem repositories med objekt-id'er baseret på SHA-1 og SHA-256 er der mulighed for at foretage push- og pull-operationer mellem repositories, der bruger forskellige hashing-algoritmer.

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