Na drie maanden ontwikkeling is de release van het gedistribueerde systeem voor broncodebeheer Git 2.43 gepubliceerd. Git is een van de meest populaire, betrouwbare en krachtige versiebeheersystemen, die flexibele middelen voor niet-lineaire ontwikkeling biedt, gebaseerd op takken en samenvoegen. Om de integriteit van de geschiedenis te waarborgen en bestand te zijn tegen wijzigingen 'achteraf' wordt er impliciete hashing van alle voorgaande geschiedenis in elke commit gebruikt; ook is het mogelijk om digitale handtekeningen van ontwikkelaars voor bepaalde tags en commits te valideren.
In vergelijking met de vorige release zijn er in de nieuwe versie 464 wijzigingen aangebracht, voorbereid met de medewerking van 80 ontwikkelaars, van wie 17 voor het eerst deelnamen aan de ontwikkeling. De belangrijkste vernieuwingen zijn:
- Er zijn opties "âfilter" en "âfilter-to" toegevoegd aan het commando "git repack", waarmee het mogelijk is om een repository opnieuw in tepakken met inachtneming van een opgegeven objectfilter, en indien nodig objecten die niet aan het filter voldoen naar een aparte locatie te verplaatsen. Deze opties kunnen worden gebruikt om de repository te splitsen op basis van bepaalde criteria (bijvoorbeeld om onnodige of te grote objecten te verwijderen), met behoud van de toegang tot alle delen via gedeeltelijke kloning. Bijvoorbeeld, om blobs van minder dan 1 MB in de repository te behouden en de overige grote objecten naar een aparte repository te verplaatsen, kan het volgende worden uitgevoerd: $ git init âbare ..\/backup.git $ git repack -ad âfilter='blob:limit=1m' \\ âfilter-to=..\/backup.git\/objects\/pack\/pack
De initialisatie van een repository via gedeeltelijke kloning maakt het mogelijk om met een onvolledige kopie van de repository te werken, terwijl aanvragen voor ontbrekende objecten correct worden verwerkt (de ontbrekende objecten worden on-demand geladen indien nodig).
- De mogelijkheid om met meerdere pack-bestanden te werken met informatie over onbereikbare objecten (âcruft packsâ), waarnaar in de repository geen verwijzingen bestaan (geen referenties vanuit branches of tags). Met de nieuwe optie âgit repack âmax-cruft-sizeâ kan de maximale grootte van een afzonderlijk pack-bestand worden bepaald en kan de database van onbereikbare objecten worden gesplitst in een reeks kleine pack-bestanden. Het gebruik van meerdere kleine pack-bestanden in plaats van één groot bestand vermindert aanzienlijk de invoer/uitvoer operaties bij het opnieuw verpakken van repositories met een groot aantal onbereikbare objecten, omdat niet alle gegevens opnieuw hoeven te worden geschreven voor iedere verpakkingsoperatie.
- Toegevoegd is de herkenning van pogingen om een dubbele commit-annulering uit te voeren via âgit revertâ en deze informatie te verwerken in het annuleringsbericht (bij een herhaalde âgit revertâ wordt in plaats van âRevert: Revert: fix bugâ âReapply fix bugâ geschreven, en als de wijziging een derde keer wordt teruggedraaid â âRevert Reapply fix bugâ). $ git revert âno-edit HEAD >/dev/null $ git revert âno-edit HEAD >/dev/null $ git log âoneline a300922 (HEAD -> main) Reapply âfix bugâ 0050730 Revert âfix bugâ b290810 fix bug
- Het samen gebruiken van de opties âârfcâ en ââsubject-prefixâ is toegestaan. Bijvoorbeeld, om een e-mail te genereren met de prefix â[RFC PATCH bpf-next]â in het onderwerp kan het volgende worden opgegeven: $ git format-patch âsubject-prefix=âPATCH bpf-nextâ ârfc
- In de âgit logâ opdracht is het toegestaan om de placeholder â%(decorate)â op te geven om de namen van gerelateerde branches te tonen wanneer het formaat wordt bepaald met de optie ââformatâ, bijvoorbeeld: $ git log âformat=â%cr%(decorate) (%h) %sâ 3 dagen geleden (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: kleine tekstcorrecties in de release notes van 2.43.0 7 dagen geleden (tag: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1 7 dagen geleden (8ed4eb7538) Merge branch âtb/rev-list-unpacked-fixâ
- In âgit for-each-refâ en soortgelijke opdrachten is de mogelijkheid toegevoegd om .mailmap-regels toe te passen op formateurspecificaties die zijn opgegeven via de optie ââformatâ, zoals â%(authorname)â en â%(committeremail)â.
Bron: opennet.ru
