Git 2.35 kildekontroludgivelse

Efter to måneders udvikling er det distribuerede kildekontrolsystem Git 2.35 blevet frigivet. Git er et af de mest populære, pålidelige og højtydende versionskontrolsystemer, der giver fleksible ikke-lineære udviklingsværktøjer baseret på forgrening og sammensmeltning. For at sikre historiens integritet og modstand mod tilbagevirkende ændringer, anvendes implicit hashing af hele den tidligere historie i hver commit; det er også muligt at certificere individuelle tags og commits med digitale signaturer fra udviklerne.

Sammenlignet med den tidligere udgivelse indeholdt den nye version 494 ændringer, udarbejdet med deltagelse af 93 udviklere, hvoraf 35 deltog i udviklingen for første gang. Vigtigste innovationer:

  • Mulighederne for at bruge SSH-nøgler til digital signering af Git-objekter er blevet udvidet. For at begrænse gyldighedsperioden for flere nøgler er der tilføjet understøttelse af OpenSSH-direktiverne “valid-before” og “valid-after”, hvormed man kan sikre korrekt arbejde med signaturer efter nøglen er blevet roteret af en af ​​udviklerne. Før dette var der et problem med adskillelsen af ​​signaturer med den gamle og nye nøgle - hvis du sletter den gamle nøgle, vil det være umuligt at verificere signaturerne lavet med den, og hvis du forlader den, vil det fortsat være muligt at oprette nye signaturer med den gamle nøgle, som allerede er erstattet af en anden nøgle. Ved at bruge gyldig-før og gyldig-efter kan du adskille nøglernes omfang baseret på det tidspunkt, hvor signaturen blev oprettet.
  • I indstillingen merge.conflictStyle, som giver dig mulighed for at vælge præsentationsmåden for information om konflikter under en fusion, er der dukket understøttelse af "zdiff3"-tilstanden op, som flytter alle standardlinjer angivet i begyndelsen eller slutningen af ​​konflikten uden for konfliktområde, som giver mulighed for en mere kompakt præsentation af information.
  • “--staged” tilstanden er blevet tilføjet til “git stash” kommandoen, som giver dig mulighed for kun at skjule ændringer tilføjet til indekset, for eksempel i en situation hvor du midlertidigt skal udskyde nogle af de komplekse ændringer for først at tilføje, hvad der allerede er klar og håndtere resten efter et stykke tid. Tilstanden ligner "git commit"-kommandoen, der kun skriver de ændringer, der er placeret i indekset, men i stedet for at oprette en ny commit i "git stash —staged", gemmes resultatet i det midlertidige stash-område. Når ændringerne er nødvendige, kan de vendes tilbage med kommandoen "git stash pop".
  • En ny formatspecifikation er blevet tilføjet til "git log"-kommandoen, "-format=%(describe)", som giver dig mulighed for at kombinere outputtet fra "git log" med outputtet af "git describe"-kommandoen. Parametrene for "git describe" er angivet direkte inde i specifikationen ("-format=%(describe:match= ,ekskluder= )"), hvor du også kan inkludere forkortede tags ("—format=%(describe:tags= )") og konfigurer antallet af hexadecimale tegn for at identificere objekter ("—format=%(describe:abbrev= )"). For at angive de sidste 8 commits, hvis tags ikke har et frigivelseskandidat-tag, og angive 8-tegns identifikatorer, kan du bruge kommandoen: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643.abg.2b95d -gb94bd 056bbc2.34.1f642 v56-95-gffb8f7d v2.34.1-203- gdf9c2980902adeb2.34.1 v640-3-g41b212a2.34.1
  • User.signingKey-indstillingen understøtter nu nye typer nøgler, der ikke er begrænset til "ssh-"-typen og angiver den fulde filsti til nøglen. Alternative typer er angivet ved hjælp af "key::"-præfikset, for eksempel "key::ecdsa-sha2-nistp256" for ECDSA-nøgler.
  • Hastigheden til at generere en liste over ændringer i "—histogram"-tilstanden, såvel som ved brug af "—color-moved-ws", som styrer fremhævningen af ​​mellemrum i farveforskellene, er blevet mærkbart øget.
  • Kommandoen "git jump", der bruges til at give Vim information om det nøjagtige spring til den ønskede position i en fil, når du analyserer flettekonflikter, ser forskelle eller udfører en søgeoperation, giver mulighed for at indsnævre de dækkede flettekonflikter. For at begrænse operationer til kun "foo"-mappen, kan du f.eks. angive "git jump merge - foo", og for at udelukke "Documentation"-mappen fra behandling - "git jump merge - ':^Documentation'"
  • Der er arbejdet på at standardisere brugen af ​​"size_t" typen i stedet for "unsigned long" for værdier, der repræsenterer størrelsen af ​​objekter, hvilket gjorde det muligt at bruge "clean" og "smudge" filtre med filer større end 4 GB på alle platforme, inklusive platforme med LLP64-datamodellen, typen "unsigned long", hvori er begrænset til 4 bytes.
  • “-empty=(stop|drop|keep)”-indstillingen er blevet tilføjet til “git am”-kommandoen, som giver dig mulighed for at vælge adfærden for tomme beskeder, der ikke indeholder patches, når patches fra postkassen analyseres. Værdien "stop" vil afslutte hele patch-operationen, "drop" vil springe en tom patch over, og "keep" vil skabe en tom commit.
  • Tilføjet understøttelse af delvise indekser (sparse index) til kommandoerne "git reset", "git diff", "git blame", "git fetch", "git pull" og "git ls-files" for at forbedre ydeevnen og spare plads i repositories , hvori delvise kloningsoperationer (sparse-checkout) udføres.
  • Kommandoen "git sparse-checkout init" er blevet forældet og bør erstattes af "git sparse-checkout set".
  • Tilføjet indledende implementering af en ny "reftable" backend til lagring af referencer såsom filialer og tags i repository. Den nye backend bruger bloklager, der bruges af JGit-projektet og er optimeret til lagring af meget store antal referencer. Backend er endnu ikke integreret med refs-systemet og er ikke klar til praktisk brug.
  • Farvepaletten for "git grep"-kommandoen er blevet justeret til at matche GNU grep-værktøjet.

Kilde: opennet.ru

Tilføj en kommentar