Udgivet version 2.50 af det distribuerede versionkontrolsystem Git. Git har høj ydeevne og tilbyder værktøjer til ikke-lineær udvikling baseret på forgrening og sammensmeltning af grene. For at sikre integriteten af historien og modstandsdygtighed mod 'bagudrettede' ændringer anvendes implicit hashing af hele den tidligere historie i hver commit, samt digital signaturverificering af udviklerne af individuelle tags og commits. Git-koden distribueres under GPLv2+-licensen.
Sammenlignet med den tidligere version er 621 ændringer blevet accepteret i den nye version, forberedt med deltagelse af 98 udviklere, hvoraf 35 deltager i udviklingen for første gang. De vigtigste nyheder:
- Muligheden for at opdele basen af uopnåelige objekter ('cruft packs') i flere pack-filer er blevet udvidet. Disse pack-filer refereres ikke til i repository (ingen grene eller tags peger på dem). Brug af flere små pack-filer i stedet for en stor fil reducerer betydeligt ind-/uddataoperationer ved repacketering af repositories med mange uopnåelige objekter, da det ikke er nødvendigt at overskrive alle data for hver repacketeringsoperation.
Den nye version tilbyder muligheden '—combine-cruft-below-size', som kan bruges til at organisere samlingen af eksisterende pack-filer, hvis størrelse ikke overstiger den angivne værdi. I modsætning til den tidligere tilgængelige mulighed '—max-cruft-size' begrænser den nye mulighed '—combine-cruft-below-size' ikke den maksimale størrelse af den resulterende pack-fil, hvilket gør det muligt at kombinere pack-filer mere effektivt i repositories med mange uopnåelige objekter, der er fordelt på flere pack-filer.
- Eksperimentel støtte til inkrementel opdatering af multipack-indekser MIDX (multi-pack index) er blevet tilføjet, hvor hvert lag af MIDX-indekset med oplysninger om tilgængeligheden af objekter opbevares i en separat bitmap-fil. I meget store repositories muliggør den implementerede type indekser hurtig og effektiv tilføjelse af nye bitkort til tilgængeligheden af objekter i takt med, at commits modtages.
- Den gamle motor til kollegial merge-operationer "recursive" er blevet fjernet fra kodebasen og er blevet afløst af den fuldstændigt omarbejdede motor "ORT" (Ostensibly Recursive’s Twin), som er mere effektiv, funktionel og nemmere at vedligeholde. ORT gør det muligt at bestemme muligheden for at fusionere to objekter uden at oprette nye objekter i repositoryet (med den gamle motor var det nødvendigt at udføre kommandoen "git merge-tree —write-tree", som oprettede nye objekter i repositoryet). I Git 2.50 er der implementeret en mulighed "—quiet" i merge-tree kommandoen, hvormed muligheden for at fusionere kan kontrolleres baseret på returkode uden at skrive data til repositoryet.
- I "git cat-file —batch" og lignende kommandoer er der tilføjet en mulighed "—filter", som muliggør at springe visse objekter over under operationen. git cat-file —batch-check='%(objectname)' —filter='object:type=tree'
- I "git maintenance" kommandoen er der implementeret tre nye handlinger: worktree-prune, rerere-gc og reflog-expire. Handlingen worktree-prune er beregnet til at fjerne forældede eller beskadigede arbejds-træer (worktrees) i repositoryet. Handlingen rerere-gc fjerner gamle poster, der er tilbage efter opløsning af merge-konflikter. Handlingen reflog-expire fjerner forældede, utilgængelige objekter fra reflog.
- Der er tilføjet kommandoen "git reflog drop", som fjerner alle reflog-data for den angivne gren.
- Optimeringen af behandlingen og brugen af referencer er blevet udført, for eksempel er caching af referencer blevet implementeret, unødvendige kontroller ved udførelsen af kommandoen "git update-ref" er blevet fjernet, og effektiviteten af at søge efter eksisterende iteratorer for referencer er blevet forbedret.
- Der er tilføjet KeepAlive-indstillinger til cURL-biblioteket: http.keepAliveIdle, http.keepAliveInterval og http.keepAliveCount.
- I "git rev-list" kommandoen er muligheden for at outputte i et maskinlæsbart format blevet implementeret, hvor hvert felt er adskilt af NUL-tegn.
- Perl-sproget er blevet udelukket fra de afhængigheder, der er nødvendige for dokumentationsværktøjer og udførelsestest-sæt ("make test"). Mange Perl-en-linje scripts i testene er blevet erstattet af shell-funktioner eller omskrevet i C.
- Der er tilføjet en userdiff-behandler til konfigurationsfilformatet ".ini".
- I send-email kommandoen er understøttelsen af Outlook SMTP-server blevet forbedret.
Kilde: opennet.ru
