De release van het gedistribueerde systeem voor versiebeheer voor bronteksten Git 2.53 is gepresenteerd. Git onderscheidt zich door zijn hoge prestaties en biedt middelen voor niet-lineaire ontwikkeling, gebaseerd op branching en merging van takken. Voor het waarborgen van de integriteit van de geschiedenis en robuustheid tegen retroactieve wijzigingen worden impliciete hashing van de gehele eerdere geschiedenis in elke commit en digitale handtekeningen van ontwikkelaars voor individuele tags en commits gebruikt. De Git-code wordt verspreid onder de GPLv2+ licentie.
In vergelijking met de vorige release zijn in deze nieuwe versie 466 wijzigingen doorgevoerd, voorbereid met de deelname van 70 ontwikkelaars (21 namen voor het eerst deel aan de ontwikkeling van Git). De belangrijkste vernieuwingen zijn:
- Er is een mogelijkheid toegevoegd om de 'geometric' repository pack-strategie ('git repack --geometric') toe te passen op gedeeltelijk gekloonde externe repositories die in 'promisor' modus draaien (ontbrekende objecten worden indien nodig gedownload). Bij het opnieuw samenpakken met de opties '--geometric' worden pack-bestanden met de extensie '.promisor' afzonderlijk behandeld en verpakt. De 'geometric' strategie stelt in staat om de onderhoudstijd van grote monorepositories te verkorten door selectieve herverpakking van objecten en het uitsluiten van onnodige resource-intensieve operaties, zoals het samenvoegen van alle pack-bestanden (de geometrische progressie van de grootte van pack-bestanden blijft behouden, waarbij elk volgend pack-bestand minimaal twee keer zo groot moet zijn als het vorige).
- De opdracht 'git fast-import' heeft de optie '--signed-commits=strip-if-invalid' gekregen voor het verwijderen van digitale handtekeningen van de geïmporteerde objecten die ongeldig zijn geworden na het herschrijven van een deel van de repositorygeschiedenis. Voorheen kon men ofwel importeren of alle handtekeningen verwijderen, zonder onderscheid tussen geldige en nietszeggende. De optie 'strip-if-invalid' maakt het mogelijk om tools te implementeren voor het behouden van geldige handtekeningen en het opnieuw ondertekenen van objecten met niet-relevante handtekeningen.
- In de uitvoer van het commando «git repo structure» is informatie toegevoegd over de grootte van alle bereikbare objecten (reachable) in de repository, onderverdeeld naar hun types. De informatie wordt nu weergegeven in een leesbaar formaat met eenheden en wordt apart getoond voor de feitelijke en de op schijf ingenomen grootte, waardoor het mogelijk is om de totale grootte van de repository op schijf te beoordelen. $ git repo structure | Repository structuur | Waarde | | ——————— | ———- | | * Referenties | | | * Aantal | 1.78 k | | * Takken | 5 | | * Tags | 1.03 k | | * Remotes | 749 | | * Overige | 0 | | | | * Bereikbare objecten | | | * Aantal | 421.37 k | | * Commits | 88.03 k | | * Bomen | 169.95 k | | * Blobs | 162.40 k | | * Tags | 994 | | * Geïnfleerde grootte | 7.61 GiB | | * Commits | 60.95 MiB | | * Bomen | 2.44 GiB | | * Blobs | 5.11 GiB | | * Tags | 731.73 KiB | | * Schijfgrootte | 301.50 MiB | | * Commits | 33.57 MiB | | * Bomen | 77.92 MiB | | * Blobs | 189.44 MiB | | * Tags | 578.13 KiB |
- De «git maintenance»-opdracht heeft de subopdracht «is-needed» gekregen om onderhoudsoperaties op de repository alleen uit te voeren wanneer dat nodig is.
- In de experimentele «git replay»-opdracht is er standaard een update van de verwijzingen in de transactie geïmplementeerd, in plaats van te laten zien waar de verwijzingen zouden moeten wijzen zonder deze bij te werken.
- De «git blame»-opdracht heeft de mogelijkheid gekregen om het algoritme voor het beoordelen van verschillen te kiezen met de optie «—diff-algorithm=».
- In de «git repo info»-opdracht is de optie «—all» toegevoegd.
- De ondersteuning voor symbolische links is vanuit Git-for-Windows overgebracht naar het Windows-platform.
In de vorige uitgave is er een waarschuwing toegevoegd over het standaard inschakelen van de componentenbouw in de Rust-taal in Git 2.53. Echter, in versie Git 2.53 zijn slechts afzonderlijke verbeteringen in de ondersteuning voor Rust toegevoegd (de mogelijkheid om zonder GNU sed te bouwen), maar de bouw met Rust via Makefile blijft standaard uitgeschakeld (vereist het instellen van de vlag WITH_RUST), terwijl het bij gebruik van Meson automatisch wordt geactiveerd als de rustc-compiler aanwezig is. In versie Git 3.0 is het de bedoeling om de Rust-toolchain op te nemen als verplichte bouwafhankelijkheid.
Bron: opennet.ru
