Frigivelse af distribueret kildekontrolsystem Git 2.25

Ledig frigivelse af et distribueret kildekontrolsystem Git 2.25.0. Git er et af de mest populære, pålidelige og højtydende versionskontrolsystemer, der giver fleksible ikke-lineære udviklingsværktøjer baseret på forgrening og sammensmeltning. For at sikre historiens integritet og modstand mod tilbagevirkende ændringer, anvendes implicit hashing af hele den tidligere historie i hver commit; det er også muligt at certificere individuelle tags og commits med digitale signaturer fra udviklerne.

Sammenlignet med den tidligere udgivelse indeholdt den nye version 583 ændringer, udarbejdet med deltagelse af 84 udviklere, hvoraf 32 deltog i udviklingen for første gang. The main innovationer:

  • Muligheden for delvis kloning nærmer sig stabilisering og fuld klarhed, hvilket giver dig mulighed for kun at overføre en del af dataene og arbejde med en ufuldstændig kopi af depotet. En typisk klon kopierer alle data fra depotet, inklusive hver version af hver fil i ændringshistorikken. For meget store depoter resulterer kopiering af data i en betydelig stigning i trafik og diskplads, selvom udvikleren kun er interesseret i en delmængde af filerne. For at gøre det nemmere kun at hente en del af det fungerende kildetræ introducerer den nye udgivelse en eksperimentel "sparse-checkout"-kommando og en ny "--sparse" mulighed for "clone"-kommandoen.

    Tidligere blev den selektive kloningsproces udført gennem opgaven filtre for at bortfiltrere unødvendigt indhold og muligheden "—no-checkout" for at deaktivere udfyldning af manglende filer. Derefter var det nødvendigt at aktivere core.sparseCheckout-indstillingen og definere en liste over ekskluderede stimønstre i .git/info/sparse-checkout-filen, før du udfører checkout-handlingen. For for eksempel at klone uden klatter og forhindre filer i at blive ekstraheret fra undermapper med dybde 2 eller mere, kan du køre:

    git clone --filter=blob:none --no-checkout /dit/depot/her repo
    $cd repo
    $ kat >.git/info/sparse-checkout <EOF
    /*
    !/*
    EOF
    $ git config core.sparseCheckout 1
    $ git checkout.

    Den nye "git sparse-checkout"-kommando forenkler arbejdet i høj grad og reducerer processen med at organisere arbejdet med et ufuldstændigt lager til følgende kommandoer:

    git clone --filter=blob:none --sparse /dit/depot/her repo
    git sparse-checkout sæt /path/to/check/out

    Sparse-checkout-kommandoen giver dig mulighed for at indstille en liste over stier til checkout (sæt) uden manuelt at konfigurere .git/info/sparse-checkout, samt vise den aktuelle liste over stier (liste) og aktivere eller deaktivere delvise checkouts (aktiver /deaktiver).

    For at optimere arbejdet med meget store lagre og lister over skabeloner, "git config core.sparseCheckoutCone", som begrænser tilladte mønstre (i stedet for vilkårlige .gitignore-mønstre kan du angive, om alle stier og alle filer i en given undermappe skal tjekkes ud). For eksempel, hvis et stort lager har en mappe "A/B/C", og alt arbejdet er koncentreret i undermappen "C", når du aktiverer sparseCheckoutCone-tilstanden, vil kommandoen "git sparse-checkout set A/B/ C" vil udtrække hele indholdet af "C", men fra "A" og "B" vil det kun udtrække de dele, der er nødvendige for at arbejde med "C".

  • Fra dokumentationen ("git rebase -h") er alle referencer til "--preserve-merges" muligheden blevet fjernet, som er blevet forældet og skal bruges i stedet for at migrere et sæt commits.git rebase --rebase-merges".
  • For at forbedre læsbarheden af ​​meddelelser med patches sendt til mailinglister, er "git format-patch —cover-from-description subject" tilføjet, når det er angivet, bruges det første afsnit fra grenbeskrivelsesteksten som emne for følgebrev til et sæt plastre.
  • Implementeret understøttelse af den kombinerede brug af kommandoen "git apply -3way" og indstillingen "merge.conflictStyle" ("git apply" tager nu højde for konfliktbeskrivelsesstilen fra merge.conflictStyle, når det er nødvendigt at løse konflikten efter forsøg på at for at anvende en patch-fil til depotet).
  • Funktionsdefinitionskoden brugt i operationer såsom "git diff/grep --show-function/-function-context" er blevet udvidet til at understøtte definition af funktionsgrænser i sprogprogrammer Elixir.
  • En ny mulighed er blevet tilføjet til "git add", "git commit", "git reset" og andre kommandoer - "-pathspec-from-file", som gør det muligt at indlæse en liste over stier fra en fil eller inputstrøm , i stedet for at angive dem på kommandolinjen.
  • Problemet med at opdage omdøbninger på biblioteksniveau, når du skriver commits, er blevet løst. Definitionen virkede ikke, hvis indholdet af en undermappe blev flyttet til roden af ​​lageret.
  • En indledende implementering af den redesignede "git add -i"-kommando er blevet foreslået, så du kan tilføje ændret indhold interaktivt, omskrevet fra Perl til C. En lignende omarbejdning af kommandoen "git add -p" er i gang.
  • Kommandoen "git log -graph" er blevet refaktoreret, hvilket genererer et ASCII-billede af en graf med historikken for ændringer i depotet. Omarbejdningen gjorde det muligt at forbedre og forenkle output markant uden at forvrænge historiens struktur, hvilket f.eks. løste problemet med, at billedet strækker sig ud over terminallinjens bredde.
  • Indstillingen "git log --format=.." giver dig mulighed for at ændre outputformatet,
    udvidet med understøttelse af "l/L"-flagene til kun at vise den del af e-mailadressen, der er angivet før "@"-symbolet (f.eks. nyttigt, når alle udviklere har alle e-mails i det samme domæne).

  • Tilføjede en "set-url" underkommando til kommandoen "git submodule".
  • Testsæt er blevet opdateret som forberedelse til overgangen til
    hashing-algoritme SHA-2 i stedet for SHA-1.

Kilde: opennet.ru

Tilføj en kommentar