Udgivelse af det distribuerede versionskontrolsystem Git 2.31

Udgivelsen af det distribuerede versionskontrolsystem Git 2.31 er nu tilgængelig. Git er et af de mest populære, pålidelige og højtydende versionskontrolsystemer, der leverer fleksible værktøjer til ikke-lineær udvikling baseret på gren- og sammensmeltning af grene. For at sikre integriteten af historikken og modstandsdygtigheden over for 'tilbagevirkende' ændringer anvendes implicit hashing af hele den tidligere historik i hver commit, og det er også muligt at bekræfte digitale signaturer fra udviklerne af individuelle tags og commits.

Sammenlignet med den tidligere udgivelse er 679 ændringer blevet optaget i den nye version, forberedt med deltagelse af 85 udviklere, hvoraf 23 deltager for første gang i udviklingen. De vigtigste nyheder:

  • Der er tilføjet kommandoen «git maintenance», som muliggør udførelse af periodiske opgaver på systemer, der ikke understøtter cron. For eksempel kan den nye kommando bruges til at organisere periodisk kørsel af pakkeringsprocessen af repository'et for at undgå at vente på færdiggørelsen af repository-locking, når pakkeringsprocessen kører automatisk under udførelsen af forskellige kommandoer. Kommandoen «git maintenance» muliggør optimeringer og vedligeholdelsesopgaver af repository'ets struktur i baggrunden, uden at det blokerer den interaktive session - hver time udføres der arbejde med proaktiv indlæsning af friske objekter fra det eksterne repository og opdatering af commit-graffen, og hver nat startes pakkeringsprocessen af repository'et.
  • Der er tilføjet support til at føre omvendt indeks (revindex) på disken for pack-filer. Lad os minde om, at Git gemmer alle data i form af objekter, der placeres i separate filer. For at forbedre effektiviteten af arbejdet med depotet placeres objekterne desuden i pack-filer, hvor informationen præsenteres i form af en strøm af objekter, der følger efter hinanden (et tilsvarende format anvendes ved overførsel af objekter med git fetch og git push). For hver pack-fil oprettes en indexfil (.idx), der muliggør hurtig bestemmelse af offset i pack-filen, hvor dette objekt er gemt, ved hjælp af objektets identifikator. Det omvendte indeks (.rev), der er foreslået i Git 2.31, sigter mod at optimere processen med at bestemme objektets identifikator baseret på information om objektets placering i pack-filen.

    Tidligere blev en sådan konvertering udført dynamisk under parsing af pack-filen og blev kun gemt i hukommelsen, hvilket forhindrede genbrug af sådanne indekser og tvang til at generere indekset hver gang. Operationen til opbygning af indekset reduceres til at opbygge et array af par "objekt-position" og sortere det efter position, hvilket kan tage lang tid for store pack-filer.

    For eksempel blev operationen til at udskrive indholdet af objekter, der bruger direkte indeks, udført 62 gange hurtigere end operationen til at vise størrelsen af objekter, hvor data om forbindelsen mellem position og objekt ikke blev indekseret. Efter brug af det omvendte indeks begyndte de nævnte operationer at tage omtrent den samme tid. Omvendte indekser tillader også at fremskynde operationer med at sende objekter ved udførelse af fetch- og push-kommandoer ved direkte at overføre allerede klare data fra disken. Som standard oprettes der ikke omvendte indekser; for at generere dem kræves det at aktivere indstillingen "git config pack.writeReverseIndex true" efterfulgt af pakning af depotet med kommandoen "git repack -Ad".

  • Der er tilføjet ydeevneoptimeringer baseret på introduktionen af commits-graph filformatet, der anvendes til at optimere adgangen til oplysninger om commits, samt nye data om commit-generationsnummeret, der kan bruges til at fremskynde yderligere operationer med commits.
  • Mulighederne for at omdefinere navnet på den primære gren, der anvendes som standard i nye repository'er, er blevet udvidet (indstilling init.defaultBranch). Når der hentes eksterne repository'er, forsøger git at hente den gren, som HEAD peger på, dvs. hvis den eksterne server bruger grenen "main" som standard, så vil operationen "git clone" forsøge at hente "main" lokalt. I Git 2.31 er understøttelse af sådan hentning nu også implementeret for tomme repository'er. For eksempel, ved lokal kloning af et nyt repository før tilføjelse af de første patches, vil den lokale kopi nu indeholde det angivne navn på den eksterne serveren standardgren.
  • Der er tilføjet en option "—disk-usage" til kommandoen "git rev-list", der gør det muligt at udskrive resumédata om størrelsen af objekterne.
  • I forventning om den kommende udskiftning af backend til at udføre sammenfletninger, er identifikationen af omdøbninger blevet betydeligt optimeret.
  • Understøttelsen af den forældede regelbaserede erklæringsbibliotek PCRE1 er blevet afsluttet.
  • Muligheden for tvangsforbud mod brugen af forkortede links er blevet tilføjet, gældende uafhængigt af hash-algoritmen. Forbuddet aktiveres ved at tildele værdien "no" til parameteren core.abbrev.
  • Der er tilføjet en option "—path-format=(absolute|relative)" til kommandoen "git rev-parse" for eksplicit at definere output af relative eller absolutte stier.
  • I scripts til automatisk afslutning af input i Bash er det blevet enklere at tilføje afslutningsregler til egne underordnede kommandoer "git".
  • Der er tilføjet en option "—stdin" til kommandoen "git bundle" for at læse henvisninger fra standard input.
  • Der er tilføjet en ny option "—diff-merges=" til kommandoen "git log".
  • Der er tilføjet en option "—deduplicatecan" til kommandoen "git ls-files" for at fjerne dubletter i output.
  • Der er tilføjet nye masker til at undtage intervallet af commits — "^!" og "^-.",
  • Der er tilføjet options "—left-only" og "—right-only" til kommandoen "git range-diff" for kun at vise den ene side af det sammenlignede interval.
  • Der er tilføjet options "—skip-to=" og "—rotate-to=" til kommandoerne "git diff" og "git log" for at springe over eller flytte til slutningen af startstierne.
  • Der er tilføjet en option "—skip-to=" til kommandoen "git difftool" for at genoptage en afbrudt session fra en vilkårlig sti.
  • Adfærdsregler (Code-of-conduct), der definerer de grundlæggende principper for løsning af konfliktssituationer mellem udviklere, er opdateret til version 2.0 (tidligere blev version 1.4 brugt).

    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