Git 2.36 source control release

Na drie maanden ontwikkeling is het gedistribueerde bronbeheersysteem Git 2.36 uitgebracht. Git is een van de meest populaire, betrouwbare en krachtige versiebeheersystemen en biedt flexibele, niet-lineaire ontwikkeltools op basis van vertakken en samenvoegen. Om de integriteit van de geschiedenis en weerstand tegen veranderingen met terugwerkende kracht te garanderen, wordt in elke commit impliciete hashing van de gehele voorgaande geschiedenis gebruikt; het is ook mogelijk om individuele tags en commits te certificeren met digitale handtekeningen van de ontwikkelaars.

Vergeleken met de vorige release zijn er 717 wijzigingen doorgevoerd in de nieuwe versie, voorbereid met de deelname van 96 ontwikkelaars, van wie er 26 voor het eerst aan de ontwikkeling deelnamen. Belangrijkste innovaties:

  • De “git log” en “git show” commando’s hebben nu een “—remerge-diff” optie waarmee je de verschillen kunt laten zien tussen het algehele resultaat van de samenvoeging en de daadwerkelijke gegevens die in de commit worden weergegeven na het verwerken van het “merge” commando , waarmee u duidelijk de wijzigingen kunt evalueren die zijn aangebracht als gevolg van het oplossen van fusieconflicten. Het normale "git show" commando laat de verschillende conflictoplossingen inspringen, waardoor veranderingen moeilijk te begrijpen zijn. In de schermafbeelding onder de regel toont “+/-” zonder inspringing bijvoorbeeld de laatste oplossing van het conflict dat verband houdt met het hernoemen van sha1 naar oid in het commentaar in de eerste vertakking, en toont “+/-” met inspringing de initiële oplossing van het conflict veroorzaakt door het verschijnen van een extra argument in de tweede branch in de dwim_ref() functie.
    Git 2.36 source control release

    Wanneer u de optie "--remerge-diff" gebruikt, worden de verschillen tussen conflictoplossingen niet gescheiden voor elke bovenliggende vertakking, maar worden de algemene verschillen tussen het bestand waarin merge-conflicten voorkomen en het bestand waarin de conflicten zijn opgelost weergegeven.

    Git 2.36 source control release

  • Verhoogde flexibiliteit bij het configureren van het gedrag voor het leegmaken van schijfcaches via een aanroep van de functie fsync(). De eerder beschikbare parameter core.fsyncObjectFiles is opgesplitst in twee configuratievariabelen core.fsync en core.fsyncMethod, waardoor de mogelijkheid wordt geboden om fsync niet alleen toe te passen op objectbestanden (.git/objects), maar ook op andere git-structuren zoals links ( .git /refs), reflog- en pack-bestanden.

    Met behulp van de core.fsync variabele kun je een lijst met interne Git-structuren opgeven waarvoor fsync bovendien zal worden aangeroepen na een schrijfbewerking. Met de variabele core.fsyncMethod kunt u een methode selecteren voor het leegmaken van de cache. U kunt bijvoorbeeld fsync selecteren om de systeemaanroep met dezelfde naam te gebruiken, of alleen write-out opgeven om terugschrijven van pagecache te gebruiken.

  • Om bescherming te bieden tegen kwetsbaarheden die de vervanging van .git-mappen door andere gebruikers in gedeelde secties manipuleren, is de verificatie van de repository-eigenaar versterkt. Het uitvoeren van git-commando's is nu alleen toegestaan ​​in hun eigen ".git"-mappen. Als de map met de repository aan een andere gebruiker toebehoort, wordt er standaard een foutmelding weergegeven. Dit gedrag kan worden uitgeschakeld met de instelling safe.directory.
  • Het “git cat-file” commando, bedoeld voor het uitvoeren van de broninhoud van Git-objecten, is aangevuld met de “--batch-command” optie, die een aanvulling is op de eerder beschikbare “--batch” en “--batch-check ”-opdrachten met de mogelijkheid om het uitvoertype adaptief te selecteren met behulp van de “inhoud <object>" om inhoud weer te geven of "info <object>" om informatie over het object weer te geven. Bovendien wordt de opdracht "flush" ondersteund om de uitvoerbuffer leeg te maken.
  • Aan het commando “git ls-tree”, bedoeld voor het genereren van een lijst met de inhoud van een objectboom, is de optie “—oid-only” (“—object-only”) toegevoegd, vergelijkbaar met “—name-only ”, waarbij alleen object-ID's worden weergegeven om de aanroep vanuit scripts te vereenvoudigen. Ook geïmplementeerd is de optie “--format”, waarmee u uw eigen uitvoerformaat kunt definiëren door informatie over modus, type, naam en grootte te combineren.
  • Het “git bisect run” commando implementeert de detectie van het niet instellen van de vlag van het uitvoerbare bestand voor een script en in dit geval worden fouten weergegeven met de codes 126 of 127 (voorheen werden alle revisies gemarkeerd als problemen als het script niet kon worden uitgevoerd) .
  • Een --refetch optie toegevoegd aan het "git fetch" commando om alle objecten op te halen zonder de andere partij te informeren over de inhoud die al op het lokale systeem staat. Dit gedrag kan handig zijn bij het herstellen van fouten wanneer de integriteit van lokale gegevens onzeker is.
  • De commando's "git update-index", "git checkout-index", "git read-tree" en "git clean" ondersteunen nu gedeeltelijke indexen (sparse index) om de prestaties te verbeteren en ruimte te besparen in repositories waar gedeeltelijke bewerkingen worden uitgevoerd. (spaarzaam afrekenen).
  • Het gedrag van het “git clone —filter=… —recurse-submodules” commando is veranderd, wat nu leidt tot het gedeeltelijk klonen van submodules (voorheen werd bij het uitvoeren van dergelijke commando's het filter alleen op de hoofdinhoud toegepast, en werden submodules volledig gekloond zonder rekening te houden met het filter).
  • Het "git Bundle" commando heeft ondersteuning toegevoegd voor het specificeren van filters voor het selectief plaatsen van inhoud, vergelijkbaar met gedeeltelijke kloonbewerkingen.
  • Optie "--recurse-submodules" toegevoegd aan het commando "git branch" om submodules recursief te doorlopen.
  • Userdiff biedt een nieuwe handler voor de Kotlin-taal.

Bron: opennet.ru

Voeg een reactie