Etter tre måneders utvikling har det distribuerte kildekontrollsystemet Git 2.36 blitt utgitt. Git er et av de mest populære, pålitelige og høyytende versjonskontrollsystemene, og gir fleksible ikke-lineære utviklingsverktøy basert på forgrening og sammenslåing. For å sikre integriteten til historien og motstanden mot tilbakevirkende endringer, brukes implisitt hashing av hele den tidligere historien i hver forpliktelse; det er også mulig å sertifisere individuelle tagger og forpliktelser med digitale signaturer fra utviklerne.
Sammenlignet med forrige utgivelse ble 717 endringer tatt i bruk i den nye versjonen, utarbeidet med deltagelse av 96 utviklere, hvorav 26 deltok i utviklingen for første gang. Hovedinnovasjoner:
- Kommandoene "git log" og "git show" har nå et "—remerge-diff"-alternativ som lar deg vise forskjellene mellom det totale resultatet av sammenslåingen og de faktiske dataene som reflekteres i commit etter å ha behandlet "merge"-kommandoen , som lar deg tydelig evaluere endringene som er gjort som et resultat av å løse fusjonskonflikter. Den normale "git show"-kommandoen rykker inn de forskjellige konfliktløsningene, noe som gjør endringer vanskelig å forstå. For eksempel, i skjermbildet under linjen "+/-" uten innrykk viser den siste løsningen av konflikten knyttet til omdøping av sha1 til oid i kommentaren i den første grenen, og "+/-" med innrykk viser initialen løsning av konflikten forårsaket av utseendet til et ekstra argument i den andre grenen i funksjonen dwim_ref().
Når du bruker alternativet "--remerge-diff", skilles ikke forskjellene mellom konfliktløsninger for hver overordnede gren, men de generelle forskjellene mellom filen som har flettekonflikter og filen som har konfliktene løst vises.
- Økt fleksibilitet i å konfigurere atferden for å tømme diskbuffer via et kall til fsync()-funksjonen. Den tidligere tilgjengelige core.fsyncObjectFiles-parameteren har blitt delt inn i to konfigurasjonsvariabler core.fsync og core.fsyncMethod, og gir muligheten til å bruke fsync ikke bare på objektfiler (.git/objects), men også på andre git-strukturer som lenker ( .git /refs), reflog og pack-filer.
Ved å bruke core.fsync-variabelen kan du spesifisere en liste over interne Git-strukturer som fsync i tillegg vil bli kalt etter en skriveoperasjon. core.fsyncMethod-variabelen lar deg velge en metode for å tømme hurtigbufferen, for eksempel kan du velge fsync for å bruke systemkallet med samme navn, eller spesifisere bare utskrivning for å bruke tilbakeskrivning av sidecache.
- For å beskytte mot sårbarheter som manipulerer andre brukeres substitusjon av .git-kataloger til delte seksjoner, har verifiseringen av depoteier blitt styrket. Å utføre alle git-kommandoer er nå bare tillatt i deres egne ".git"-kataloger. Hvis katalogen med depotet tilhører en annen bruker, vil en feil vises som standard. Denne virkemåten kan deaktiveres ved å bruke safe.directory-innstillingen.
- "git cat-file"-kommandoen, beregnet for å sende ut kildeinnholdet til Git-objekter, har blitt supplert med "--batch-command"-alternativet, som utfyller de tidligere tilgjengelige "--batch" og "--batch-check ”-kommandoer med evnen til adaptivt å velge utdatatypen ved å bruke " innhold <objekt>" for å vise innhold eller "info <objekt>" for å vise informasjon om objektet. I tillegg støttes "flush"-kommandoen for å tømme utgangsbufferen.
- Til «git ls-tree»-kommandoen, beregnet for å generere en liste over innholdet i et objekttre, er alternativet «—oid-only» («—object-only») lagt til, på samme måte som «—name-only» ”, viser kun objektidentifikatorer for å forenkle anropet fra skript. Også implementert er alternativet "--format", som lar deg definere ditt eget utdataformat ved å kombinere informasjon om modus, type, navn og størrelse.
- Kommandoen "git bisect run" implementerer deteksjonen av å ikke sette det kjørbare filflagget for et skript og i dette tilfellet vise feil med kodene 126 eller 127 (tidligere, hvis skriptet ikke kunne kjøres, ble alle revisjoner merket med problemer) .
- La til et --refetch-alternativ til "git fetch"-kommandoen for å hente alle objekter uten å informere den andre parten om innholdet som allerede er på det lokale systemet. Denne oppførselen kan være nyttig for å gjenopprette feil når integriteten til lokale data er usikker.
- "git update-index", "git checkout-index", "git read-tree" og "git clean"-kommandoene støtter nå delvise indekser (sparse index) for å forbedre ytelsen og spare plass i depoter der delvise operasjoner utføres. kloning (sparsom kasse).
- Oppførselen til kommandoen "git clone —filter=... —recurse-submodules" har blitt endret, noe som nå fører til delvis kloning av undermoduler (tidligere, når slike kommandoer ble utført, ble filteret bare brukt på hovedinnholdet, og undermoduler ble klonet helt uten å ta hensyn til filteret).
- "git bundle"-kommandoen har lagt til støtte for å spesifisere filtre for selektiv plassering av innhold, som ligner på delvis kloningsoperasjoner.
- Lagt til "--recurse-submodules"-alternativet til "git branch"-kommandoen for å krysse undermoduler rekursivt.
- Userdiff tilbyr en ny behandler for Kotlin-språket.
Kilde: opennet.ru