Udgivelse af versionskontrolsystemet Git 2.36

Efter tre måneders udvikling er version 2.36 af det distribuerede versionskontrolsystem Git blevet offentliggjort. Git er et af de mest populære, pålidelige og højtydende versionskontrolsystemer, der tilbyder fleksible midler til ikke-lineær udvikling, baseret på forgrening og sammenlægning af grene. For at sikre integriteten af historien og modstandsdygtighed over for "bagudrettede" ændringer anvendes implicit hashing af hele den tidligere historie i hver commit, og der er også mulighed for digital signatur af udviklernes specifikke tags og commits.

Sammenlignet med den tidligere udgave er der i den nye version indgået 717 ændringer, forberedt med deltagelse af 96 udviklere, hvoraf 26 deltager i udviklingen for første gang. De vigtigste nyheder er:

  • Der er tilføjet en mulighed "—remerge-diff" til kommandoerne "git log" og "git show", som gør det muligt at vise forskellene mellem det samlede sammenlægningsresultat og de faktiske data, der er reflekteret i committet efter behandlingen af kommandoen "merge", hvilket gør det muligt tydeligt at vurdere ændringerne, der er udført som følge af konfliktafklaring ved sammenlægning. Den almindelige kommando "git show" adskiller forskellige konfliktafklaring ved indrykning, hvilket gør det vanskeligt at forstå ændringerne. For eksempel viser linjerne "+/-" uden indrykning det seneste konfliktløsningsresultat, der er relateret til omdøbning i den første gren fra sha1 til oid i kommentaren, mens "+/-" med indrykning viser den oprindelige konfliktløsning, der blev forårsaget af en ekstra argumentation i funktionen dwim_ref() i den anden gren.
    Udgivelse af versionskontrolsystemet Git 2.36

    Når du bruger muligheden "—remerge-diff", adskilles forskellene mellem konfliktafklaringerne ikke for hver forældergren, men vises de generelle forskelle mellem filen med sammenlægningskonflikter og filen, hvor konflikterne er løst.

    Udgivelse af versionskontrolsystemet Git 2.36
  • Fleksibiliteten i konfigurationen af adfærden ved nulstilling af diskcache er forbedret gennem kald til funktionen fsync(). Den tidligere tilgængelige parameter core.fsyncObjectFiles er opdelt i to konfigurationsvariabler, core.fsync og core.fsyncMethod, som giver mulighed for at anvende fsync ikke kun på objektsfiler (.git/objects), men også på andre git-strukturer som refs (.git/refs), reflog og pack-filer.

    Gennem variablen core.fsync kan man angive en liste over interne Git-strukturer, for hvilke fsync desuden vil blive kaldt efter skrivning. Variablen core.fsyncMethod gør det muligt at vælge metoden til at rydde cachen; for eksempel kan man vælge fsync for at anvende det navngivne systemopkald eller angive writeout-only for at anvende forsinket skrivning (pagecache writeback).

  • For at beskytte mod sårbarheder, der manipulerer med substitution af andre brugeres .git biblioteker i delte områder, er kontrollen af ejerskabet af repository blevet styrket. Udførelse af alle git-kommandoer tillades nu kun i ens egne .git-biblioteker. Hvis biblioteket til repository tilhører en anden bruger, vil der som standard blive vist en fejl. Denne adfærd kan deaktiveres ved hjælp af indstillingen safe.directory.
  • I kommandoen «git cat-file», som er beregnet til at udskrive den originale indhold af Git-objekter, er der tilføjet en mulighed «—batch-command», som supplerer de tidligere tilgængelige kommandoer «—batch» og «—batch-check» med muligheden for adaptiv valg af output-type via angivelse af «contents » for at udskrive indholdet eller «info » for at udskrive oplysninger om objektet. Desuden understøttes kommandoen «flush» til at rydde output-bufferen.
  • I kommandoen «git ls-tree», som er beregnet til at generere en liste over indholdet af objekttræet, er der tilføjet en mulighed «—oid-only» («—object-only»), som svarer til «—name-only» og udskriver kun objekt-id'er for at forenkle opkald fra scripts. Der er også implementeret en mulighed «—format», der gør det muligt at definere sit eget output-format ved at kombinere oplysninger om tilstand, type, navn og størrelse.
  • I kommandoen «git bisect run» er det blevet implementeret, at ikke-udførelsen af en script ikke tilskrives egenskaben for eksekverbar fil, og der vil i dette tilfælde blive outputtet fejl med koderne 126 eller 127 (tidligere, hvis scriptet ikke kunne startes, blev alle revisioner markeret som problematiske).
  • I kommandoen «git fetch» er der tilføjet en mulighed «—refetch» til at hente alle objekter uden at informere den anden part om indholdet, der allerede findes på det lokale system. Adfærd af denne slags kan være nyttig til at gendanne tilstanden efter fejl, når man ikke er sikker på integriteten af de lokale data.
  • I kommanderne «git update-index», «git checkout-index», «git read-tree» og «git clean» er støtte til sparse indekser blevet tilføjet, hvilket forbedrer ydeevnen og sparer plads i repositoryer, hvor der udføres sparse-checkout operationer.
  • Adfærden for kommandoen «git clone —filter=… —recurse-submodules» er ændret, så den nu resulterer i delvist kloning af submoduler (tidligere blev filteret kun anvendt på det primære indhold, mens submodulerne blev klonet fuldt ud uden hensyntagen til filteret).
  • I kommandoen «git bundle» er der tilføjet støtte til at specificere filtre for selektivt at inkludere indhold svarende til operationer med delvis kloning.
  • I kommandoen «git branch» er der tilføjet en mulighed «—recurse-submodules» for rekursiv gennemgang af submoduler.
  • I userdiff er der foreslået en ny behandler til sproget Kotlin.

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