Efter tre måneders udvikling er udgivelsen af det distribuerede kildekontrolsystem Git 2.43 blevet offentliggjort. 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 sammenlægning af grene. For at sikre historiens integritet og modstand mod retroaktive ændringer, anvendes implicit hashing af hele den tidligere historie i hver commit, det er også muligt at verificere individuelle tags og commits med digitale signaturer fra udviklerne.
Sammenlignet med den tidligere udgivelse indeholder den nye version 464 ændringer, der er udarbejdet med deltagelse af 80 udviklere, hvoraf 17 deltog i udviklingen for første gang. De vigtigste innovationer er:
- Kommandoen "git repack" har nu mulighederne "--filter" og "--filter-to", som giver dig mulighed for at ompakke et repository baseret på et specificeret filter af objekter, og om nødvendigt flytte objekter, der ikke opfylder det angivne filter, til en separat placering. Mulighederne kan bruges til at opdele et repository i henhold til bestemte kriterier (for eksempel for at fjerne unødvendige eller for store objekter), samtidig med at du bevarer muligheden for at få adgang til alle dele ved hjælp af delvis kloning. For eksempel, for at efterlade blobs mindre end 1 MB i repository'et og flytte andre store objekter til et separat repository, kan du køre: $ git init --bare ../backup.git $ git repack -ad --filter='blob:limit=1m' \ --filter-to=../backup.git/objects/pack/pack
Initialisering af et repository ved hjælp af delvis kloning giver dig mulighed for at arbejde med en ufuldstændig kopi af repository'et og håndtere anmodninger til manglende objekter korrekt (når du tilgår manglende objekter, indlæses de øjeblikkeligt efter behov).
- Tilføjet muligheden for at arbejde med flere pakkefiler med information om utilgængelige objekter ("cruft packs"), der ikke refereres til i arkivet (ikke refereres til af branches eller tags). Ved at bruge den nye indstilling "git repack --max-cruft-size" kan du definere den maksimale størrelse af en enkelt pakkefil og opnå en opdeling af databasen med utilgængelige objekter i en serie af små pakkefiler. Ved at bruge flere små pakkefiler i stedet for én stor kan du reducere I/O-operationer betydeligt, når du ompakker arkiver med et stort antal utilgængelige objekter, da der for hver ompakningsoperation ikke vil være behov for at omskrive alle dataene.
- Tilføjet genkendelse af forsøg på at udføre en dobbelt fortryd-commit via "git revert" og tager højde for dette, når der oprettes en besked om fortrydelsen (hvis du gentager "git revert", i stedet for "Revert: Revert: fix bug" vil det blive skrevet "Reapply fix bug", og hvis du ruller ændringen tilbage for tredje gang - "Revert Reapply fix bug"). $ git revert --no-edit HEAD >/dev/null $ git revert --no-edit HEAD >/dev/null $ git log --oneline a300922 (HEAD -> main) Genanvend "fix bug" 0050730 Tilbagefør "fix bug" b290810 retter fejl
- Valgmulighederne "--rfc" og "--subject-prefix" må bruges sammen. For eksempel, for at generere en besked med præfikset "[RFC PATCH bpf-next]" i emnelinjen, kan du angive: $ git format-patch --subject-prefix="PATCH bpf-next" --rfc
- Kommandoen git log tillader pladsholderen "%(decorate)" at vise navnene på relaterede grene, når formatet angives med indstillingen "--format", for eksempel: $ git log --format='%cr%(decorate) (%h) %s' 3 dage siden (HEAD -> master, origin/master, origin/HEAD) (e0939bec27) RelNotes: mindre formuleringsrettelser i 2.43.0 udgivelsesnoter 7 dage siden (tag: v2.43.0-rc1) (dadef801b3) Git 2.43-rc1 7 dage siden (8ed4eb7538) Merge branch 'tb/rev-list-unpacked-fix'
- Tilføjet muligheden for at anvende .mailmap-regler på formatspecifikationer angivet via --format-indstillingen, såsom "%(authorname)" og "%(committeremail)", til "git for-each-ref" og lignende kommandoer.
Kilde: opennet.ru
