Utgivelse av det distribuerte kildekontrollsystemet Git 2.25

Tilgjengelig utgivelse av det distribuerte kildekontrollsystemet git 2.25.0. 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 583 endringer akseptert i den nye versjonen, utarbeidet med deltagelse av 84 utviklere, hvorav 32 deltok i utviklingen for første gang. Den viktigste innovasjoner:

  • Muligheten for delvis kloning nærmer seg stabilisering og full beredskap, slik at du bare kan overføre deler av dataene og jobbe med en ufullstendig kopi av depotet. En typisk klon kopierer alle data fra depotet, inkludert hver versjon av hver fil i endringsloggen. For svært store depoter resulterer kopiering av data i en betydelig økning i trafikk og diskplass, selv om utvikleren bare er interessert i en delmengde av filene. For å gjøre det lettere å hente bare deler av det fungerende kildetreet, introduserer den nye utgivelsen en eksperimentell "sparse-checkout"-kommando og et nytt "--sparse"-alternativ for "clone"-kommandoen.

    Tidligere ble den selektive kloningsprosessen utført gjennom oppgaven filtre for å filtrere ut unødvendig innhold og alternativet "—no-checkout" for å deaktivere utfylling av manglende filer. Etter det, før utsjekkingsoperasjonen, var det nødvendig å aktivere core.sparseCheckout-innstillingen og definere en liste over ekskluderte banemønstre i .git/info/sparse-checkout-filen. For å klone uten blobs og forhindre at filer pakkes ut fra underkataloger med dybde 2 eller mer, kan du for eksempel kjøre:

    git clone --filter=blob:none --no-checkout /din/repository/here repo
    $cd repo
    $ cat >.git/info/sparse-checkout
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout .

    Den nye "git sparse-checkout"-kommandoen forenkler arbeidet betydelig og reduserer prosessen med å organisere arbeidet med et ufullstendig depot til følgende kommandoer:

    git clone --filter=blob:none --sparse /din/repository/her repo
    git sparse-checkout set /path/to/check/out

    Sparse-checkout-kommandoen lar deg sette en liste over baner for utsjekking (sett) uten å manuelt konfigurere .git/info/sparse-checkout, samt vise gjeldende liste over stier (liste) og aktivere eller deaktivere delvise utsjekker (aktiver /deaktiver).

    For å optimalisere arbeidet med svært store depoter og lister over maler, "git config core.sparseCheckoutCone", som begrenser tillatte mønstre (i stedet for vilkårlige .gitignore-mønstre kan du spesifisere om alle stier og alle filer i en gitt underkatalog skal sjekkes ut). For eksempel, hvis et stort depot har en katalog "A/B/C" og alt arbeidet er konsentrert i underkatalogen "C", så når du aktiverer sparseCheckoutCone-modus, vil kommandoen "git sparse-checkout set A/B/ C" vil trekke ut hele innholdet i "C", men fra "A" og "B" vil det kun trekke ut delene som er nødvendige for å jobbe med "C".

  • Fra dokumentasjonen ("git rebase -h") er alle referanser til alternativet "--preserve-merges" fjernet, som har blitt avskrevet og bør brukes i stedet for å migrere et sett med forpliktelser.git rebase --rebase-merges".
  • For å forbedre lesbarheten til meldinger med oppdateringer sendt til e-postlister, er alternativet "git format-patch —cover-from-description subject" lagt til, når spesifisert, brukes det første avsnittet fra grenbeskrivelsesteksten som emne for følgebrev for et sett med lapper.
  • Implementert støtte for kombinert bruk av "git apply -3way"-kommandoen og "merge.conflictStyle"-innstillingen ("git apply" tar nå hensyn til konfliktbeskrivelsesstilen fra merge.conflictStyle når det er nødvendig å løse konflikten etter forsøk for å bruke en oppdateringsfil på depotet).
  • Funksjonsdefinisjonskoden som brukes i operasjoner som "git diff/grep --show-function/-function-context" har blitt utvidet til å støtte definering av funksjonsgrenser i språkprogrammer Elixir.
  • Et nytt alternativ er lagt til "git add", "git commit", "git reset" og andre kommandoer - "-pathspec-from-file", som gjør det mulig å laste en liste over stier fra en fil eller inndatastrøm , i stedet for å liste dem på kommandolinjen.
  • Problemet med å oppdage omnavn på katalognivå når du skriver commits, er løst. Definisjonen fungerte ikke hvis innholdet i en underkatalog ble flyttet til roten av depotet.
  • En innledende implementering av den redesignede "git add -i"-kommandoen har blitt foreslått, slik at du kan legge til endret innhold interaktivt, omskrevet fra Perl til C. En lignende omarbeiding av "git add -p"-kommandoen er i gang.
  • “git log –graph”-kommandoen har blitt refaktorert, og genererer et ASCII-bilde av en graf med historikk for endringer i depotet. Omarbeidingen gjorde det mulig å forbedre og forenkle produksjonen betydelig uten å forvrenge strukturen i historien, noe som for eksempel løste problemet med at bildet strekker seg utover terminallinjebredden.
  • Alternativet "git log --format=.." lar deg endre utdataformatet,
    utvidet med støtte for "l/L"-flaggene for å vise bare den delen av e-postadressen som er angitt før "@"-symbolet (for eksempel nyttig når alle utviklere har alle e-poster i samme domene).
  • La til en "set-url" underkommando til "git submodule" kommandoen.
  • Testsett er oppdatert som forberedelse til overgang til
    hashing-algoritme SHA-2 i stedet for SHA-1.

Kilde: opennet.ru

Kjøp pålitelig hosting for nettsteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Kjøp pålitelig webhotell med DDoS-beskyttelse, VPS VDS-servere | ProHoster