Git 2.35 source control release

Na twee maanden ontwikkeling is het gedistribueerde bronbeheersysteem Git 2.35 uitgebracht. Git is een van de meest populaire, betrouwbare en krachtige versiebeheersystemen en biedt flexibele, niet-lineaire ontwikkeltools op basis van vertakken en samenvoegen. Om de integriteit van de geschiedenis en weerstand tegen veranderingen met terugwerkende kracht te garanderen, wordt in elke commit impliciete hashing van de gehele voorgaande geschiedenis gebruikt; het is ook mogelijk om individuele tags en commits te certificeren met digitale handtekeningen van de ontwikkelaars.

Vergeleken met de vorige release bevatte de nieuwe versie 494 wijzigingen, voorbereid met de medewerking van 93 ontwikkelaars, van wie er 35 voor het eerst aan de ontwikkeling deelnamen. Belangrijkste innovaties:

  • De mogelijkheden voor het gebruik van SSH-sleutels voor het digitaal ondertekenen van Git-objecten zijn uitgebreid. Om de geldigheidsduur van meerdere sleutels te beperken is er ondersteuning voor de OpenSSH-richtlijnen “valid-before” en “valid-after” toegevoegd, waarmee je kunt zorgen voor correct werken met handtekeningen nadat de sleutel door een van de ontwikkelaars is geroteerd. Voordien was er een probleem met de scheiding van handtekeningen door de oude en nieuwe sleutel - als u de oude sleutel verwijdert, is het onmogelijk om de handtekeningen die ermee zijn gemaakt te verifiëren, en als u deze laat staan, blijft het mogelijk om nieuwe handtekeningen maken met de oude sleutel, die al is vervangen door een andere sleutel. Met valid-before en valid-after kunt u de reikwijdte van de sleutels scheiden op basis van het tijdstip waarop de handtekening is gemaakt.
  • In de merge.conflictStyle-instelling, waarmee u de modus kunt selecteren voor het weergeven van informatie over conflicten tijdens een samenvoeging, is ondersteuning voor de “zdiff3”-modus verschenen, die alle standaardregels die aan het begin of einde van het conflict zijn gespecificeerd, buiten het conflict verplaatst gebied, wat een compactere presentatie van informatie mogelijk maakt.
  • De “--staged” modus is toegevoegd aan het “git stash” commando, waarmee je alleen wijzigingen kunt verbergen die aan de index zijn toegevoegd, bijvoorbeeld in een situatie waarin je tijdelijk enkele van de complexe wijzigingen moet uitstellen om eerst voeg toe wat al klaar is en behandel na een tijdje de rest. De modus is vergelijkbaar met het “git commit” commando, waarbij alleen de wijzigingen worden geschreven die in de index zijn geplaatst, maar in plaats van een nieuwe commit aan te maken in “git stash —staged”, wordt het resultaat opgeslagen in het tijdelijke stash-gebied. Zodra de wijzigingen nodig zijn, kunnen ze ongedaan worden gemaakt met het commando “git stash pop”.
  • Er is een nieuwe formaatspecificatie toegevoegd aan het "git log" commando, "--format=%(describe)", waarmee je de uitvoer van "git log" kunt combineren met de uitvoer van het "git beschrijven" commando. De parameters voor "git beschrijven" worden direct in de specificatie gespecificeerd ("-format=%(describe:match= ,uitsluiten= )"), waarin u ook verkorte tags kunt opnemen ("—format=%(describe:tags= )") en configureer het aantal hexadecimale tekens om objecten te identificeren (“—format=%(describe:abbrev= )"). Om bijvoorbeeld de laatste 8 commits op te sommen waarvan de tags geen release candidate tag hebben, en identificaties van 8 tekens te specificeren, kun je het commando gebruiken: $ git log -8 —format='%(describe:exclude=*-rc *,afgekort=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643-g2b95d94b056ab v2.34.1-642 -gb56bd 95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
  • De instelling user.signingKey ondersteunt nu nieuwe typen sleutels die niet beperkt zijn tot het type “ssh-” en waarbij het volledige bestandspad naar de sleutel wordt gespecificeerd. Alternatieve typen worden opgegeven met het voorvoegsel "key::", bijvoorbeeld "key::ecdsa-sha2-nistp256" voor ECDSA-sleutels.
  • De snelheid waarmee een lijst met wijzigingen wordt gegenereerd in de modus “—histogram” en bij gebruik van de optie “—color-moved-ws”, die de markering van spaties in een kleurverschil regelt, is merkbaar toegenomen.
  • Het commando "git jump", dat wordt gebruikt om Vim te voorzien van informatie over de exacte sprong naar de gewenste positie in een bestand bij het parseren van merge-conflicten, het bekijken van diffs of het uitvoeren van een zoekbewerking, biedt de mogelijkheid om de gedekte merge-conflicten te beperken. Om bijvoorbeeld bewerkingen te beperken tot alleen de map "foo", kun je "git jump merge - foo" specificeren, en om de map "Documentation" uit te sluiten van verwerking - "git jump merge - ':^Documentation'"
  • Er is gewerkt aan het standaardiseren van het gebruik van het type "size_t" in plaats van "unsigned long" voor waarden die de grootte van objecten vertegenwoordigen, waardoor het mogelijk werd om "clean" en "smudge" filters te gebruiken met bestanden groter dan 4 GB op alle platforms, inclusief platforms met het LLP64-datamodel, is het type “unsigned long” beperkt tot 4 bytes.
  • De “-empty=(stop|drop|keep)” optie is toegevoegd aan het “git am” commando, waarmee je het gedrag kunt selecteren voor lege berichten die geen patches bevatten bij het parseren van patches uit de mailbox. De waarde “stop” zal de gehele patchoperatie beëindigen, “drop” zal een lege patch overslaan, en “keep” zal een lege commit creëren.
  • Ondersteuning toegevoegd voor gedeeltelijke indexen (sparse index) aan de commando's "git reset", "git diff", "git blaam", "git fetch", "git pull" en "git ls-files" om de prestaties te verbeteren en ruimte te besparen repositories , waarin gedeeltelijke kloonbewerkingen (sparse-checkout) worden uitgevoerd.
  • Het "git sparse-checkout init" commando is verouderd en zou vervangen moeten worden door "git sparse-checkout set".
  • Eerste implementatie toegevoegd van een nieuwe "reftable" backend voor het opslaan van referenties zoals branches en tags in de repository. De nieuwe backend maakt gebruik van blokopslag die wordt gebruikt door het JGit-project en is geoptimaliseerd voor het opslaan van zeer grote aantallen referenties. De backend is nog niet geïntegreerd met het refs-systeem en is nog niet klaar voor praktisch gebruik.
  • Het kleurenpalet van het commando "git grep" is aangepast zodat het overeenkomt met het GNU grep-hulpprogramma.

Bron: opennet.ru

Voeg een reactie