Efter tre måneders udvikling er udgivet version 2.32 af det distribuerede versionskontrolsystem Git. Git er et af de mest populære, pålidelige og højtydende versionskontrolsystemer, der tilbyder fleksible værktøjer til ikke-lineær udvikling, baseret på forgrening og sammenføring 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 det er også muligt at bekræfte digitale signaturer fra udviklerne af enkeltstående tags og commits.
Sammenlignet med den tidligere udgave er der i den nye version accepteret 617 ændringer, udarbejdet med deltagelse af 100 udviklere, hvoraf 35 deltager i udviklingen for første gang. De vigtigste nysgeringer:
- I kommandoen 'git commit' er der tilføjet en mulighed '--trailer [=]', som gør det lettere at vedhæfte egen struktureret information (trailer) til committet i nøgle/værdi-format, som derefter kan behandles med kommandoen 'interpret-trailers'.
- I stedet for mekanismen GIT_CONFIG_NOSYSTEM, der blev brugt til at forhindre læsning fra den delte konfigurationsfil for hele systemet, foreslås det at bruge mekanismen GIT_CONFIG_SYSTEM, der giver mulighed for eksplicit at angive, hvilken fil der skal indlæses med de systemomfattende indstillinger, samt parameteren GIT_CONFIG_GLOBAL for at overskrive indstillinger knyttet til individuelle brugere i $HOME/.gitconfig. Tildeling af den GIT_CONFIG_SYSTEM-variabel med en tom værdi ændrer adfærden til svarende til GIT_CONFIG_NOSYSTEM.
- Ved anvendelse af den anden version af Git kommunikationsprotokollen er det implementeret en bestemmelse af den fælles forfader på modtagersiden under udførelsen af 'git push', hvilket har forøget effektiviteten af 'git push' til niveauet af 'git fetch' og undgået download af objekter, som ikke er nødvendige.
- En simpel IPC-grænseflade er blevet tilføjet, hvilket muliggør oprettelse af tjenester som fsmonitor.
- Behandlingen af filer '.gitattributes', '.gitignore' og '.mailmap' er blevet afsluttet, hvis de er symboliske links.
- Til HTTP-transport er der tilføjet støtte til caching af adgangskoden, der blev brugt til at låse certifikatet op.
- I kommandoen 'git stash show' er der implementeret mulighed for at vise den ikke-trackerede del af opbevaringen af midlertidigt fjernede filer.
- Der er foreslået en mere avanceret strategi for genpakning af repositoryen med kommandoen «git repack», der reducerer ressourceforbruget under genpakning.
- I kommandoen «git commit» er der implementeret en udvidet variant af indstillingen «—fixup» (oprettelse af commit til «rebase —autosquash») — «—fixup=(reword|amend):», der giver mulighed for at ændre kun logbeskeden eller både beskeden og indholdet.
- I kommandoen «git send-email» er der taget højde for indstillingen core.hooksPath.
- I «git format-patch -v» er det tilladt at bruge tællere, der ikke er heltal.
- I «git clone» er der tilføjet indstillingen «—reject-shallow», der forhindrer kloning fra repositories i shallow-tilstand (uden fuld ændringshistorik).
- I programmet «gitweb» er der tilføjet en tilstand for at skjule e-mails, som erstatter e-mail-lignende strenge ved output.
- Logikken for håndtering af kommandoen «git apply —3way» er ændret, så den nu først forsøger at anvende trevejs-sammenfletningsalgoritmen, og kun i tilfælde af fejl eller konflikt falder tilbage til den almindelige anvendelse af patch (tidligere var det omvendt).
- I kommandoen «git apply» er det tilladt at angive indstillingerne «—3way» og «—cached» samtidigt.
- I Userdiff er der tilføjet skabeloner for sproget «Scheme».
- I kommandoen «git log» er der tilføjet indstillingen «—diff-merges=» og indstillingen log.diffMerges for at vælge standardtilstanden.
- I kommandoerne «git add» og «git rm» er der tilføjet ekstra beskyttelse mod ændring af data i stier, der ligger uden for området for partiell kloning (sparse checkout).
- I kommandoen «git rev-list» er der tilføjet indstillingen «—filter=object:type=» for at udelukke en bestemt type objekter fra pack-filen genereret af kommandoen pack-objects.
- I «git pack-objects» er det forbudt at angive negative værdier i indstillinger, der accepterer numeriske værdier, såsom «—window» og «—depth».
Kilde: opennet.ru
