Software-update - Git 2.54.0
In dit artikel:
Ontwikkelaars van Git hebben versie 2.54.0 vrijgegeven, met meerdere nieuwe functies en verbeteringen gericht op eenvoudiger historiewijziging, beter beheer van hooks en efficiëntere onderhoudsstrategieën.
Belangrijkste vernieuwingen
- Nieuw experimenteel commando git history: bedoeld voor eenvoudige, gerichte herschrijving van commits zonder de complexiteit van git rebase -i. Het ondersteunt momenteel twee operaties: reword (wijzigt een commit-bericht zonder working tree of index aan te raken, werkt ook in bare repositories) en split (interactief een commit in tweeën opdelen door geselecteerde hunks naar een nieuw oudercommit te verplaatsen). git history werkt niet met merge-commits en weigert handelingen die tot merge-conflicten zouden leiden. Het is gebouwd op de replay-infrastructuur, waardoor het geschikt is voor scripting en automatisering.
- Configuratie-gebaseerde hooks: je kunt nu hooks declareren in git-configuratiebestanden (~/.gitconfig, /etc/gitconfig of lokale repo-config), bijvoorbeeld door hook."naam".event en hook."naam".command in te stellen. Dat maakt centraal beheer en mix-en-match van hooks per gebruiker of repo veel eenvoudiger. Meerdere hooks per event worden ondersteund, bestaande scripts in $GIT_DIR/hooks blijven werken en individuele hooks kunnen worden uitgeschakeld met hook..enabled = false. Veel ingebouwde hooks zijn gemigreerd naar de nieuwe API.
- Geometrische repacking standaard voor onderhoud: de geometric-strategie (introductie in 2.52) wordt de standaard voor git maintenance run. Deze strategie combineert packfiles incrementeel wanneer dat efficiënt is, en voorkomt dure all-into-one repacks tenzij dat echt noodzakelijk is. De oude gc-strategie blijft beschikbaar via maintenance.strategy = gc.
Weitere noemenswaardige verbeteringen
- git add -p: betere navigatie tussen hunks (visueel aangeven welke al geaccepteerd of overgeslagen zijn) en een --no-auto-advance optie om na het laatste hunk in een bestand te blijven.
- git replay: volwassenere tool met atomische ref-updates, een --revert-modus, automatische verwijdering van lege commits en support tot de root-commit.
- HTTP-transport: afhandeling van HTTP 429 (Too Many Requests) met Retry-After-ondersteuning en nieuwe instellingen http.retryAfter, http.maxRetries en http.maxRetryTime.
- git log -L: output gaat nu via de standaard diff-pijplijn, waardoor opties als -S en -G (pickaxe) en patch-formatting nu compatibel zijn met -L.
- Incremental multi-pack index (MIDX): ondersteuning voor compaction om lagen samen te voegen, belangrijk voor langdurige repositories.
- git status kreeg status.compareBranches om ook tegen push-remote te vergelijken (handig bij forks/triangulaire workflows).
- Overige: eenvoudiger toevoegen van trailers tijdens rebase, correcte behandeling van geldig ondertekende commits met intussen verlopen GPG-sleutels, git blame met keuze voor diff-algoritme, verbeterde backfill voor partial clones (nu met revision/pathspec-argumenten), ondersteuning voor niet-ASCII alias-namen via [alias "naam"] syntax, en een fix voor histogram diff-compactie.
Onder de motorkap werd het object database (ODB)-API herwerkt naar een plug-in-achtergrond, wat toekomstige alternatieve opslagbackends en meer flexibiliteit mogelijk maakt.
Voor wie meer wil: de volledige changelog en release notes voor 2.54 (en eerdere versies) staan in de Git-releaseopmerkingen. Deze uitgave legt nadruk op praktische workflow-verbeteringen, betere automatisering en efficiënter onderhoud van repositories.