Na het drie maanden durende ontwikkelingsproces is versie 2.32 van het gedistribueerde systeem voor versiebeheer Git vrijgegeven. Git is een van de populairste, betrouwbare en hoogperformante versiebeheersystemen, dat flexibele middelen voor niet-lineaire ontwikkeling biedt, gebaseerd op takken en samenvoegen. Voor het waarborgen van de integriteit van de geschiedenis en de weerstand tegen "achteraf" wijzigingen, wordt de hele eerdere geschiedenis in elke commit impliciet gehasht. Ook is het mogelijk om digitale handtekeningen van ontwikkelaars voor afzonderlijke tags en commits te verifiëren.
In vergelijking met de vorige versie zijn er 617 wijzigingen geaccepteerd, bereid door 100 ontwikkelaars, van wie 35 voor het eerst deelnamen aan de ontwikkeling. Belangrijke innovaties zijn:
- De opdracht "git commit" heeft de optie "--trailer [=]" gekregen, waarmee het makkelijker wordt om gestructureerde informatie (trailer) in sleutel/waarde-indeling aan de commit te voegen, die vervolgens met de opdracht "interpret-trailers" kan worden verwerkt.
- In plaats van het GIT_CONFIG_NOSYSTEM mechanisme, dat voorkomt dat uit het systeembrede configuratiebestand wordt gelezen, is voorgesteld om het GIT_CONFIG_SYSTEM mechanisme te gebruiken, waarmee expliciet kan worden aangegeven uit welk bestand de systeeminstellingen moeten worden geladen, evenals de parameter GIT_CONFIG_GLOBAL om de aan individuele gebruikers gekoppelde instellingen in $HOME/.gitconfig te overschrijven. Het toekennen van een lege waarde aan de GIT_CONFIG_SYSTEM variabele verandert het gedrag naar dat van GIT_CONFIG_NOSYSTEM.
- Bij gebruik van de tweede versie van het communicatieprotocol van Git, is het mogelijk om bij het uitvoeren van "git push" de gemeenschappelijke voorouder aan de ontvangende kant te bepalen. Dit heeft de efficiëntie van "git push" verhoogd naar dat van "git fetch" en het downloaden van onnodige objecten uitgesloten.
- Er is een eenvoudige IPC-interface toegevoegd, waarmee diensten zoals fsmonitor kunnen worden gemaakt.
- De verwerking van bestanden ‘.gitattributes’, ‘.gitignore’ en ‘.mailmap’ is stopgezet als ze symbolische links zijn.
- Ondersteuning voor het cachen van wachtwoorden die met succes zijn gebruikt om een certificaat te ontgrendelen is toegevoegd voor HTTP-vervoer.
- In de opdracht "git stash show" is de mogelijkheid geïmplementeerd om het niet-gevolgde deel van de opslag voor tijdelijk verwijderde bestanden weer te geven.
- Een geavanceerdere strategie voor het opnieuw verpakken van de repository is geïntroduceerd met het commando "git repack", wat het verbruik van middelen tijdens het verpakken vermindert.
- Bij de "git commit"-opdracht is een uitgebreide variant van de optie "—fixup" (het creëren van een commit voor "rebase —autosquash") geïmplementeerd: "—fixup=(reword|amend):", waarmee je kunt kiezen om alleen het logbericht te wijzigen of zowel het bericht als de inhoud.
- Bij het commando "git send-email" is rekening gehouden met de instelling van core.hooksPath.
- Bij "git format-patch -v" is het gebruik van niet-gehele getallen als tellers toegestaan.
- Bij "git clone" is de optie "—reject-shallow" toegevoegd, waarmee het klonen van repositories in de shallow-modus (zonder volledige wijzigingsgeschiedenis) is verboden.
- In het programma "gitweb" is een modus toegevoegd om e-mail te verbergen, die e-mailachtige teksten in de output vervangt.
- De logica voor de verwerking van het commando "git apply —3way" is gewijzigd, die nu eerst probeert de driestandaard samensmelting toe te passen en alleen bij een mislukking of conflict terugvalt op het normale toepassen van de patch (voorheen was het omgekeerd).
- Bij het commando "git apply" is het mogelijk gemaakt om de opties "—3way" en "—cached" tegelijkertijd op te geven.
- In Userdiff zijn sjablonen toegevoegd voor de programmeertaal "Scheme".
- Aan de "git log"-opdracht is de optie "—diff-merges=" en de instelling log.diffMerges toegevoegd voor het kiezen van de standaardmodus.
- Bij de commando's "git add" en "git rm" is extra bescherming toegevoegd om te voorkomen dat gegevens in paden buiten het bereik van gedeeltelijke kloning (sparse checkout) worden gewijzigd.
- Aan het commando "git rev-list" is de optie "—filter=object:type=" toegevoegd om een bepaald type objecten uit het pack-bestand, dat wordt gegenereerd door het commando pack-objects, uit te sluiten.
- In "git pack-objects" is het toegestaan om negatieve waarden in opties te specificeren die numerieke waarden accepteren, zoals "—window" en "—depth".
Bron: opennet.ru
