Na drie maanden ontwikkeling is versie 2.44 van het gedistribueerde systeem voor versiebeheer Git gepubliceerd. Git is een van de meest populaire, betrouwbare en krachtige versiebeheersystemen, dat flexibele middelen voor niet-lineaire ontwikkeling biedt, gebaseerd op takken en samenvoegen. Voor de integriteit van de geschiedenis en bestendigheid tegen 'backdating' wordt impliciete hashing van de gehele voorgaande geschiedenis in elke commit gebruikt, en het is ook mogelijk om digitale handtekeningen van ontwikkelaars van afzonderlijke tags en commits te verifiëren. De code van Git wordt verspreid onder de GPLv2+ licentie.
In vergelijking met de vorige versie zijn er 503 wijzigingen in deze nieuwe versie opgenomen, voorbereid door 85 ontwikkelaars, van wie er 34 voor het eerst betrokken waren bij de ontwikkeling. Belangrijkste vernieuwingen:
- Een nieuwe opdracht 'git replay' is toegevoegd, die als alternatief voor 'git rebase' kan worden gebruikt en kan worden ingezet om de geschiedenis te reconstrueren op de server zonder een werkdirectory (bare-repository, zonder werkdirectory), het tegelijkertijd behandelen van meerdere takken, de rebase-operatie uitvoeren voor takken die anders zijn dan de momenteel uitgecheckte, of gewoon om de samenvoegoperaties te versnellen.
- Ondersteuning voor het continue integratiesysteem GitLab CI is toegevoegd.
- In de opdrachten 'git add' en 'git stash' is ondersteuning voor padattributen ':(attr:...)' toegevoegd, overeenkomstig met de opdracht 'git show'. Bijvoorbeeld, 'git add ':(attr:~binary)'' kan worden gebruikt om alle tekstbestanden (niet-binaire bestanden) aan de index toe te voegen. Daarnaast is in deze nieuwe release het attribuut 'builtin_objectmode' voorgesteld voor het filteren van bestandsroutes op toegangsrechten. Bijvoorbeeld, 'git add ':(attr:builtin_objectmode=100755)'' kan worden gebruikt om alle uitvoerbare bestanden toe te voegen.
- Ondersteuning toegevoegd voor het hergebruik van objecten die zijn verspreid over meerdere pack-bestanden, waarvoor een multi-pack-index aanwezig is met gegevens over de beschikbaarheid van objecten (optimalisatie die het mogelijk maakt om in plaats van daadwerkelijke gegevensoverdracht, te verwijzen naar gegevens die al aanwezig zijn in pack-bestanden). Vanaf versie 2.44 kan Git nu het hergebruik van objecten bovenop meerdere pack-bestanden verwerken, zonder dat het nodig is om de repository opnieuw in één pack-bestand te verpakken. Om de nieuwe functionaliteit in te schakelen, dienen de volgende commando's te worden uitgevoerd: git config —global pack.allowPackReuse multi git multi-pack-index write —bitmap
waarbij het aantal pack-bestanden waaruit objecten worden hergebruikt, kan worden gevolgd in de waarde "pack-reused … (from N)", die wordt weergegeven tijdens het uitvoeren van "git push".
- Het commando "git rebase —autosquash" kan nu worden toegepast voor rebase-operaties in niet-interactieve modus, waardoor het mogelijk is om een rebase uit te voeren en snel fixup-correcties toe te passen zonder de wijzigingslijst te inspecteren en zonder de omgevingsvariabele GIT_SEQUENCE_EDITOR te wijzigen.
- Aan het commando "git merge-file" is de optie "—diff-algorithm" toegevoegd voor het kiezen van een alternatieve algoritme voor het beoordelen van verschillen tussen bestanden.
- In het commando "git checkout -B []" is het vernieuwen en ophalen van branches die een andere werkboom gebruiken, verboden. Om het oude gedrag te herstellen, is de optie "—ignore-other-worktrees" toegevoegd.
- De mogelijkheid is toegevoegd om de instelling "git config advice.pushAlreadyExists" de waarde "true" toe te wijzen, die de instructie voor het uitschakelen van tips (hint) bij het weergeven verwijdert, waarmee ruimte op het scherm wordt ingenomen.
- De uitvoering van het commando "git for-each-ref" met de optie "—no-sort" is geoptimaliseerd, waardoor het nu resulteert in uitvoer in onbepaalde volgorde (eerder werd bij het opgeven van "—no-sort" toch alfabetische sortering toegepast). Na de optimalisaties versnelt het gebruik van "—no-sort" nu "git for-each-ref" met ongeveer 20% in repositories met een groot aantal verwijzingen.
- In de wincred-credentialbeheerbackend is ondersteuning toegevoegd voor het bijwerken van OAuth-tokens, vergelijkbaar met hoe dit is geïmplementeerd in de credential-cache- en credential-libsecret-backends.
- In "git fetch" is ondersteuning toegevoegd voor de configuratieparameter "fetch.all", die op dezelfde manier zal worden verwerkt als het toevoegen van de optie "—all" in de opdrachtregel.
Bron: opennet.ru
