Git 2.39 source control release

Na twee maanden ontwikkeling is het gedistribueerde broncodebeheersysteem Git 2.39 uitgebracht. Git is een van de populairste, betrouwbaarste en meest performante versiebeheersystemen en biedt flexibele, niet-lineaire ontwikkelmethoden op basis van vertakking en samenvoeging van branches. Om de integriteit van de geschiedenis en de weerstand tegen retroactieve wijzigingen te waarborgen, wordt impliciete hashing van de volledige voorgaande geschiedenis in elke commit gebruikt. Daarnaast is het mogelijk om individuele tags en commits te certificeren met digitale handtekeningen van ontwikkelaars.

Vergeleken met de vorige versie bevat de nieuwe versie 483 wijzigingen, voorbereid met medewerking van 86 ontwikkelaars, van wie er 31 voor het eerst aan de ontwikkeling meewerkten. De belangrijkste vernieuwingen zijn:

  • De opdracht "git shortlog", die samenvattende statistieken uit de wijzigingsgeschiedenis weergeeft, heeft nu een optie "--group" voor willekeurige groepering van commits op andere velden dan auteur of committer. Om bijvoorbeeld een lijst met ontwikkelaars weer te geven met informatie over het aantal wijzigingen, rekening houdend met de bijdragers die in het veld "Medeauteur" worden genoemd, kunt u de opdracht gebruiken: git shortlog -ns --group=auteur --group=trailer:medeauteur door

    De uitvoer van shortlog kan worden geaggregeerd met behulp van opmaakspecificaties, en de optie "--group" kan het maken van complexe rapporten aanzienlijk vereenvoudigen zonder extra sorteeropdrachten uit te voeren. Om bijvoorbeeld een rapport te genereren met informatie over het aantal geaccepteerde commits voor een bepaalde release per maand, kunt u het volgende opgeven: git shortlog v2.38.0.. --date='format:%Y-%m' --group='%cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Voorheen vereiste een vergelijkbare bewerking het gebruik van de hulpprogramma's sort en uniq: git log v2.38.0.. --date='format:%Y-%m' --format='%cd' | sort | uniq -c

  • De mogelijkheden van het "cruft packs"-mechanisme, ontworpen om onbereikbare objecten te verpakken waarnaar niet wordt verwezen in de repository (niet verwezen door branches of tags), zijn uitgebreid. Onbereikbare objecten worden door de garbage collector verwijderd, maar blijven een bepaalde tijd in de repository staan ​​voordat ze worden verwijderd om racecondities te elimineren. Het "cruft packs"-mechanisme maakt het mogelijk om alle onbereikbare objecten in één packbestand op te slaan en de wijzigingstijdgegevens voor elk object weer te geven in een aparte tabel, opgeslagen in een apart bestand met de extensie ".mtimes", zodat ze de algemene wijzigingstijd niet kruisen.

    Hoe lang onbereikbare objecten in de opslagplaats blijven staan ​​voordat ze daadwerkelijk worden verwijderd, wordt bepaald met de optie "--prune=". Hoewel een vertraging vóór verwijdering een redelijk effectieve en praktische manier is om corruptie van de repository door race-omstandigheden te voorkomen, is deze niet 100% betrouwbaar. Om het herstel van een beschadigde repository te vereenvoudigen, biedt de nieuwe release de mogelijkheid om ontbrekende objecten op te slaan door de optie "--expire-to" toe te voegen aan de opdracht "git repack". Hiermee kunt u een bestand opgeven om een ​​externe kopie van alle verwijderde objecten te maken. Om bijvoorbeeld onbereikbare objecten die de afgelopen 5 minuten niet zijn gewijzigd, op te slaan in het bestand backup.git, kunt u de opdracht gebruiken: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire-to=../backup.git

  • De prestaties van "git grep --cached" bij het zoeken in gebieden die sparse checkout gebruiken en sparse indexen hebben, zijn aanzienlijk verbeterd (tot 70%). Voorheen werd bij het specificeren van de optie "--cached" eerst de reguliere index doorzocht en vervolgens de gedeeltelijke indexen, wat resulteerde in merkbare vertragingen bij het zoeken in grote repositories.
  • De uitvoering is versneld. server De connectiviteit van nieuwe objecten controleren voordat ze tijdens de `git push`-bewerking in de repository worden geplaatst. Door bij de controle alleen de gedeclareerde links te overwegen, werd in een testrepository met 7 miljoen links, waarvan slechts 3% door de push-bewerking werd gedekt, de controletijd met een factor 4.5 verkort.
  • Ter bescherming tegen mogelijke integeroverlopen in de code beperkt de opdracht "git apply" nu de maximale grootte van de patches die worden verwerkt. Als een patch groter is dan 1 GB, wordt er nu een foutmelding gegenereerd.
  • Ter bescherming tegen mogelijke kwetsbaarheden zijn er wijzigingen doorgevoerd om onnodige informatie uit headers op te schonen die zijn ingesteld bij gebruik van de h2h3-module met de optie GIT_TRACE_CURL=1 of GIT_CURL_VERBOSE=1 in combinatie met HTTP/2.
  • Bij het uitvoeren van een checkout-bewerking op een branch die een symbolische koppeling naar een andere branch is, geeft de opdracht git symbolic-ref HEAD nu de naam van de doelbranch weer in plaats van de naam van de symbolische koppeling.
  • Ondersteuning toegevoegd voor het @{-1} argument aan de optie "--edit-description" ("git branch --edit-description @{-1}") voor het bewerken van de beschrijving van de vorige branch.
  • De opdracht "git merge-tree --stdin" is toegevoegd zodat een lijst met opties via standaardinvoer kan worden doorgegeven.
  • Op netwerkbestandssystemen is de fsmonitor-handler, die wijzigingen in het bestandssysteem controleert, standaard uitgeschakeld.

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster