Udgivelsen af kildekodehåndteringssystemet Git 2.39

Efter to måneders udvikling er den nye version af den distribuerede systemstyring af kildekoder, Git 2.39, blevet offentliggjort. Git er et af de mest populære, pålidelige og højtydende versionsstyringssystemer, der tilbyder fleksible værktøjer til ikke-lineær udvikling baseret på forgrening og sammenfletning af grene. For at sikre integriteten af historien og modstandsdygtighed over for såkaldte 'backdating'-ændringer anvendes implicit hashing af hele den tidligere historie i hver commit, og det er også muligt at bekræfte digitale signaturer af udviklerne af specifikke tags og commits.

I forhold til den tidligere version er 483 ændringer blevet vedtaget i den nye version, udarbejdet med deltagelse af 86 udviklere, hvoraf 31 deltager for første gang i udviklingen. De vigtigste nyheder er:

  • Til kommandoen 'git shortlog', der viser oversigter med statistik fra ændringshistorikken, er der tilføjet en option '—group' for vilkårlig gruppering af commits baseret på felter, der ikke kun begrænses til forfatteren eller committeren. For eksempel, for at vise en liste over udviklere med information om antallet af ændringer, der inkluderer co-forfattere nævnt i feltet 'Co-authored-by', kan følgende kommando anvendes: git shortlog -ns —group=author —group=trailer:co-authored-by

    Shortlog-uddata kan aggregeres ved hjælp af formateringsspecifikatorer, og muligheden "—group" gør det markant nemmere at oprette komplekse rapporter og slippe for ekstra sorteringskommandos. For eksempel, for at lave en rapport om, hvor mange commits der blev accepteret for en given version hver måned, kan man angive: git shortlog v2.38.0.. —date=’format:%Y-%m’ —group=’’ -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Tidligere ville en lignende operation kræve værktøjerne sort og uniq: git log v2.38.0.. —date=’format:%Y-%m’ —format=’’ | sort | uniq -c

  • Mulighederne for mekanismen "cruft packs", der er designet til at pakket ned uopnåelige objekter, som der ikke er referencer til i depotet (hverken grene eller tags), er blevet udvidet. Uopnåelige objekter bliver fjernet af affaldsindsamleren, men for at undgå tilstande med kapløb forbliver de i depotet i en periode før sletning. Mekanismen "cruft packs" gør det muligt at opbevare alle uopnåelige objekter i én pack-fil, mens data om ændringstidspunktet for hvert objekt opbevares i en separat tabel lagret i en fil med udvidelsen ".mtimes", så de ikke overlapper med den samlede ændringstid.

    Den tid, uopnåelige objekter forbliver i depotet før den faktiske sletning, bestemmes af indstillingen "—prune=". Selvom forsinkelsen før sletning er en effektiv og praktisk måde at forhindre skader på depotet på grund af tilstande med kapløb, er det ikke 100% pålideligt. For at forenkle genopretningen af et beskadiget depot er der i den nye version tilført en mulighed for at gemme manglende objekter. Dette er gjort ved at tilføje indstillingen "—expire-to" til "git repack"-kommandoen, som giver mulighed for at angive en fil til oprettelse af en ekstern kopi af alle slettede objekter. For eksempel, for at gemme uopnåelige objekter, der ikke har ændret sig i de sidste 5 minutter i filen backup.git, kan man bruge kommandoen: git repack —cruft —cruft-expiration=5.minutes.ago -d —expire-to=../backup.git

  • Hastigheden ved udførelse af "git grep —cached"-operationen er betydeligt øget (op til 70%) ved søgning i områder, hvor delvis kloning (sparse-checkout) anvendes, og hvor der findes delvise indekser (sparse index). Tidligere blev der ved angivelse af indstillingen "—cached" først søgt i det normale indeks og derefter i de delvise, hvilket førte til mærkbare forsinkelser ved søgning i store depoter.
  • Udførelsen er blevet fremskyndet til serveren kontrol af sammenhængen af nye objekter før de placeres i depotet ved udførelse af "git push"-operationen. Ved at overgå til kun at tage højde for de erklærede referencer ved kontrollen, er optimeringerne, der blev indført i et testdepot med 7 millioner referencer, hvoraf kun 3% er dækket af push-operationen, blevet i stand til at reducere kontroltiden med 4,5 gange.
  • For protection against potential integer overflows in the code, the maximum size of patches processed in the 'git apply' command is limited. If the patch size exceeds 1 GB, an error will now be displayed.
  • To safeguard against potential vulnerabilities, changes have been made to clean excess information from headers when using the h2h3 module with the GIT_TRACE_CURL=1 or GIT_CURL_VERBOSE=1 options alongside HTTP/2.
  • When performing a checkout operation on a branch that is a symbolic reference to another branch, the 'git symbolic-ref HEAD' command now outputs the name of the target branch instead of the name of the symbolic reference.
  • Support for the @{-1} argument has been added in the '--edit-description' option ('git branch --edit-description @{-1}') for editing the description of the previous branch.
  • The command 'git merge-tree --stdin' has been added, which allows passing a list of parameters through the standard input stream.
  • On network file systems, the fsmonitor handler that tracks changes in the filesystem is disabled by default.

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