De release van het source control-systeem Git 2.54

De release van het gedistribueerde versiebeheersysteem Git 2.54 is gepresenteerd. Git staat bekend om zijn hoge prestaties en biedt middelen voor niet-lineaire ontwikkeling, gebaseerd op takken en samenvoegen. Voor het waarborgen van de integriteit van de geschiedenis en de weerstand tegen veranderingen 'achteraf' worden impliciete hashes van de gehele voorgaande geschiedenis in elke commit gebruikt, evenals digitale handtekeningen van ontwikkelaars voor individuele tags en commits. De Git-code wordt verspreid onder de GPLv2+-licentie.

In vergelijking met de vorige release zijn er 770 wijzigingen in de nieuwe versie doorgevoerd, voorbereid met de medewerking van 137 ontwikkelaars (66 ontwikkelaars namen voor het eerst deel aan de ontwikkeling van Git). Belangrijkste vernieuwingen:

  • De 'git history'-opdracht is geïmplementeerd, die experimentele mogelijkheden biedt voor het herschrijven van de wijzigingsgeschiedenis, gemakkelijker en veiliger in gebruik dan het rebasen van commits met de 'git rebase'-opdracht. Twee bewerkingen worden aangeboden:
    • ‘git history reword <commit>’ voor het herschrijven van het bericht van de opgegeven commit zonder de werkdirectory en index te wijzigen (behalve de opmerking, de rest blijft onaangetast). Bijvoorbeeld, om een typefout te corrigeren.
    • ‘git history split <commit>’ voor interactieve splitsing van de opgegeven commit in twee verschillende commits met het verplaatsen van geselecteerde delen van de oorspronkelijke commit naar een extra commit.

    In toekomstige releases wordt verwacht dat er extra opdrachten worden toegevoegd: 'git history fixup' om een commit te corrigeren, 'git history drop' om een commit te verwijderen, 'git history reorder' om de volgorde van commits te wijzigen en 'git history squash' om commits samen te voegen.

  • Er is een nieuwe methode geïmplementeerd voor het definiëren van handlers (hook) in configuratiebestanden. In plaats van scripts met handlers te plaatsen in de map '.git/hooks' in elke repository, kunnen de commando's om handlers aan te roepen nu rechtstreeks in de configuratiebestanden worden opgegeven. Instellingen kunnen aan de repository worden gekoppeld of in configuratiebestanden die voor alle repositories gelden ( /etc/gitconfig) of voor gebruikersrepositories (~/.gitconfig) worden aangegeven. Het is mogelijk om meerdere handlers aan één gebeurtenis te koppelen. Scripts uit '.git/hooks' worden nog steeds aangeroepen, maar worden pas uitgevoerd na de handlers uit de configuratiebestanden. Gebruik het commando 'git hook list' om de lijst met handlers te bekijken, en om selectief het aanroepen van handlers uit te schakelen, gebruik de instelling 'hook..enabled = false'. [hook 'linter'] event = pre-commit command = ~/.bin/linter --cpp20 [hook 'no-leaks'] event = pre-commit command = ~/.bin/leak-detector $ git hook list pre-commit global linter ~/.bin/linter --cpp20 local no-leaks ~/.bin/leak-detector
  • In het commando 'git maintenance' is standaard de strategie 'geometric' ingeschakeld ('git config set maintenance.strategy geometric'), wat de onderhoudstijd voor grote monorepositories verkort. In vergelijking met de eerder gebruikte strategie, die de logica van het commando 'git gc' volgt, vermijdt de nieuwe strategie het opnieuw verpakken van alle objecten en sluit het onnodig belastende operaties uit, zoals het samenvoegen van alle pack-bestanden (indien mogelijk gebeurt de samenvoeging in delen en zonder het opruimen van verwijderde objecten).
  • De objectdatabase (ODB) en de bijbehorende API's zijn overgezet naar een nieuwe architectuur die gebruik maakt van plugbare backends. De herstructurering abstraheert het opslagformaat van objecten en stelt in de toekomst in staat om functionaliteiten te implementeren, zoals alternatieve backends en objectformaten, bijvoorbeeld voor efficiëntere opslag van grote binaire bestanden of voor optimalisatie van de werking van grote git-hostingdiensten.
  • In het commando «git repo structure», dat informatie over de repository-structuur toont, worden niet alleen de totale grootte weergegeven, maar ook de grootste objecten van elk type, zodat bij het inschatten van de grootte geen derde partij tool git-sizer nodig is. $ git repo structure … | * Grootste objecten | | | * Commits | | | * Maximale grootte [1] | 17.23 KiB | | * Maximale ouders [2] | 10 | | * Bomen | | | * Maximale grootte [3] | 58.85 KiB | | * Maximale invoer [4] | 1.18 k | | * Blobs | | | * Maximale grootte [5] | 1019.51 KiB | | * Tags | | | * Maximale grootte [6] | 7.13 KiB |
  • In het commando «git replay», dat in plaats van «git rebase» wordt gebruikt om de geschiedenis opnieuw te creëren op de server zonder werkboom, is standaard atomair bijwerken van referenties ingeschakeld (in plaats van het afdrukken van de lijst met update-ref commando's voor handmatige uitvoering), is de optie «—revert» geïmplementeerd om wijzigingen van een reeks commits ongedaan te maken, zijn de resulterende lege commits gefilterd en is er de mogelijkheid om de geschiedenis tot de root commit opnieuw te creëren.
  • In «git rev-list» en vergelijkbare commando's is de optie «—maximal-only» toegevoegd om alleen commits te tonen die niet bereikbaar zijn via andere commits.
  • In het commando «git repo info» is de optie «—keys» toegevoegd voor het afdrukken van een lijst met alle bekende sleutels.
  • In het commando «git add -p» is het mogelijk om tijdens het navigeren tussen codeblokken met de toetsen «J» en «K» goedgekeurde en overgeslagen blokken te markeren. De optie «—no-auto-advance» is toegevoegd om automatisch doorverwijzen naar het volgende bestand uit te schakelen, zodat je terug kunt naar eerdere bestanden voor de commit.
  • De webinterface «gitweb» is geoptimaliseerd voor gebruik op mobiele apparaten.
  • In het commando «git apply —directory» is ervoor gezorgd dat bestandspaden, zoals «.\/un\/..\/genormaliseerde\/pad» voorafgaand aan gebruik, genormaliseerd worden.
  • De mogelijkheid om eigen subcommando's toe te voegen is gedocumenteerd door bestanden «git-<cmd>» in de map met uitvoerbare bestanden te plaatsen.
  • In het commando «git send-email» is ondersteuning voor clientcertificaten toegevoegd.
  • Voor het commando «git status» is de instelling «status.compareBranches» geïmplementeerd, waarmee je de branches kunt opgeven waarmee de huidige branch vergeleken zal worden. [status] compareBranches = @{upstream} @{push}
  • In «git rebase» is de optie «—trailer» toegevoegd om het toevoegen van metadata aan alle commits te vergemakkelijken. git rebase —trailer «Reviewed-by: Test <test@example.com>»
  • De 'git fast-import' opdracht heeft de mogelijkheid gekregen om handtekeningen te vervangen voor commits die ongeldig zijn geworden na de import.
  • Ondersteuning voor het verpakken (compaction) van multi-pack indices (MIDX) is toegevoegd, waarbij kleine lagen van de MIDX-index met informatie over de beschikbaarheid van objecten en bijbehorende bitmap-bestanden worden samengevoegd, wat het aantal opgebouwde lagen in lang bestaande repositories vermindert.
  • In de 'git backfill' opdracht is de mogelijkheid geïmplementeerd om revisies (reeks commits) en padmaskers (pathspec) op te geven om de geladen delen van de wijzigingsgeschiedenis te beperken. git backfill main~100..main git backfill — ‘*.c’
  • Alternatieve vormen van het aanroepen van de opdracht 'git config list' zijn toegevoegd — 'git config -l' en 'git config —list'.
  • Het gebruik van niet-ASCII symbolen in de namen van opdrachtaliassen die in het configuratiebestand zijn gedefinieerd, is toegestaan. [alias ‘get’] command = fetch
  • De weergave van handtekeningen waarvan de GPG-sleutel is verlopen, maar die geldig waren op het moment van ondertekening van de commit, is gewijzigd. Dergelijke handtekeningen worden nu weergegeven als geldig met een opmerking over het verouderen van de sleutel (vroeger werden ze in het rood gemarkeerd, wat de indruk wekte dat ze ongeldig waren).
  • Bij toegang tot repositories via HTTP is de foutafhandeling voor foutcode 429 (Te Veel Verzoeken) gegarandeerd. Verzoeken die met deze fout zijn beëindigd, worden nu niet als een fatale fout beschouwd, maar als een tijdelijke fout waarvoor de operatie na een tijdje moet worden herhaald. De wachttijd voordat herhaling plaatsvindt, wordt ingesteld via de optie 'http.retryAfter', het aantal herhalingen — 'http.maxRetries', en de wachttijd — 'http.maxRetryTime'.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster