Git 2.39 kildekontroludgivelse

Efter to måneders udvikling er det distribuerede kildekontrolsystem Git 2.39 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 483 ændringer, udarbejdet med deltagelse af 86 udviklere, hvoraf 31 deltog i udviklingen for første gang. Vigtigste innovationer:

  • Kommandoen "git shortlog", designet til at vise oversigter med statistik fra ændringshistorikken, har tilføjet en "-group"-mulighed for vilkårlig gruppering af commits efter felter, der ikke er begrænset til forfatter eller committer. For eksempel, for at vise en liste over udviklere med information om antallet af ændringer, under hensyntagen til hjælperne nævnt i "Co-authored-by"-feltet, kan du bruge kommandoen: git shortlog -ns --group=author - -group=trailer:co-authored-by

    Shortlog-output kan aggregeres ved hjælp af formateringsspecifikationer, og "--group"-indstillingen kan væsentligt forenkle oprettelsen af ​​komplekse rapporter og eliminere behovet for yderligere sorteringskommandoer. For at oprette en rapport med information om, hvor mange commits for en given udgivelse, der blev accepteret i hver måned, kan du for eksempel angive: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Tidligere ville det have været nødvendigt at bruge sorterings- og unikke hjælpeprogrammer for at udføre en lignende handling: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | sortere | enestående -c

  • Mulighederne for "cruft packs"-mekanismen, designet til at pakke uopnåelige objekter, der ikke refereres til i lageret (ikke refereret af grene eller tags), er blevet udvidet. Uopnåelige objekter slettes af skraldeopsamleren, men forbliver i depotet i en vis tid, før de slettes for at undgå løbsforhold. "Cruft packs"-mekanismen giver dig mulighed for at gemme alle uopnåelige objekter i én pakkefil og vise data om ændringstiden for hvert objekt i en separat tabel, gemt i en separat fil med filtypenavnet ".mtimes", så de gør det. ikke overlapper med den samlede ændringstid.

    Hvor lang tid, uopnåelige objekter forbliver i depotet, før de rent faktisk slettes, bestemmes af "—prune="-indstillingen " Men mens forsinkelse før sletning er en ret effektiv og praktisk måde at forhindre korruption på depot på grund af raceforhold, er den ikke 100 % pålidelig. For at gøre det nemmere at gendanne et beskadiget lager giver den nye udgivelse mulighed for at gemme manglende objekter ved at tilføje "--expire-to"-indstillingen til kommandoen "git repack", som giver dig mulighed for at angive en fil for at oprette en ekstern kopi af alle slettede objekter. For at gemme uopnåelige objekter, der ikke er ændret i de sidste 5 minutter i filen backup.git, kan du f.eks. bruge kommandoen: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Væsentligt øget (op til 70%) hastigheden af ​​"git grep -cached" operationen ved søgning i områder, der bruger delvis kloning (sparse-checkout), og for hvilke der er delvise indekser (sparse index). Tidligere, når du specificerede "-cached"-indstillingen, blev søgningen først udført i det almindelige indeks og derefter i de delvise, hvilket førte til mærkbare forsinkelser ved søgning i store lagre.
  • Serverens verifikation af sammenhængen af ​​nye objekter, før de placeres i depotet under "git push"-operationen, er blevet fremskyndet. Ved at skifte til kun at tage højde for deklarerede links ved kontrol i et testlager med 7 millioner links, hvoraf kun 3% er dækket af push-operationen, tillod de foretagne optimeringer at reducere kontroltiden med 4.5 gange.
  • For at beskytte mod potentielle heltalsoverløb i koden, begrænser kommandoen "git apply" den maksimale størrelse af patches, der kan behandles. Hvis patchstørrelsen overstiger 1 GB, vil der nu blive vist en fejl.
  • For at beskytte mod potentielle sårbarheder er der foretaget ændringer for at rydde op i unødvendige oplysninger fra de headere, der er indstillet ved brug af h2h3-modulet med GIT_TRACE_CURL=1- eller GIT_CURL_VERBOSE=1-muligheden sammen med HTTP/2.
  • Når du udfører en check-out på en gren, der er et symbolsk link til en anden gren, viser "git symbolic-ref HEAD" kommandoen nu navnet på målgrenen i stedet for navnet på symbollinket.
  • Tilføjet understøttelse af @{-1} argumentet til "--edit-description" muligheden ("git branch —edit-description @{-1}") for at redigere beskrivelsen af ​​en tidligere gren.
  • Tilføjet "git merge-tree --stdin" kommando for at sende en liste over muligheder via standard input.
  • På netværksfilsystemer er fsmonitor-handleren, som overvåger ændringer i filsystemet, deaktiveret som standard.

Kilde: opennet.ru

Tilføj en kommentar