Uitgave van het gedistribueerde broncodebeheersysteem Git 2.24

Beschikbaar lancering van het gedistribueerde bronbeheersysteem Git 2.24.0. Git is een van de populairste, meest betrouwbare en hoogpresterende versiesysteem, dat flexibele middelen voor niet-lineaire ontwikkeling biedt, gebaseerd op het takken en samenvoegen van vertakkingen. Voor het waarborgen van de integriteit van de geschiedenis en de weerstand tegen 'retroactieve' wijzigingen, wordt impliciete hashing van de gehele eerdere geschiedenis in elke commit gebruikt, waarbij ook digitale handtekeningen van ontwikkelaars voor bepaalde tags en commits mogelijk zijn.

In vergelijking met de vorige versie zijn er 544 wijzigingen in de nieuwe versie, voorbereid met de hulp van 78 ontwikkelaars, van wie 21 voor het eerst deelnamen aan de ontwikkeling. Belangrijkste vernieuwingen:

  • Ondersteuning voor configuratiemacro's is toegevoegd, waarmee je snel kunt schakelen tussen verschillende instellingen zonder in detail in te gaan op de bijbehorende specifieke opties. Met macro's is het niet nodig om te onthouden welke instellingen je moet wijzigen om bepaalde functionaliteit te activeren. Bijvoorbeeld, in het geval van prestatieproblemen met een grote repository, kan het nodig zijn om over te schakelen naar een nieuw indexeringsmechanisme, prefixcompressie in te schakelen en de cache van niet-gevolgde bestanden te gebruiken door de parameter index.version in te stellen op 4 en core.untrackedCache te activeren. Macro's besparen tijd bij het zoeken naar de juiste oplossing in de documentatie en stellen je in staat om direct instellingen met optimalisaties voor repositories met een groot aantal bestanden te activeren:

    git config feature.manyFiles true

  • Het opslaan van objecten in de vorm van commit-graph is standaard ingeschakeld, waarbij voor indexering geen lineaire lijst van objecthashes met verwijzingen naar andere objecten wordt gebruikt, maar een grafstructuur. Voorheen was het nodig om elk object vanaf de schijf te laden om verwijzingen te vinden voor het bepalen van releases die een bepaalde bugfix bevatten, maar met opslag in de vorm van een graf kan je direct alle noodzakelijke connecties bepalen. De overgang naar opslaan in de vorm van commit-graphs in de Linux-kernel en Git heeft geleid tot bijna een verdubbeling van de prestaties van bewerkingen met takken. Om de nieuwe opslagsysteem na de update naar Git 2.24 te activeren, moet je de opdracht "git gc" uitvoeren.

    Van de wijzigingen met betrekking tot commit-graph wordt ook opgemerkt dat de voortgangsindicator voor de uitvoering van bewerkingen in verband met de commit-graph-commando's nu homogeen is met andere commando's («git commit-graph write», «git commit-graph verify», enzovoort). De voortgangsindicator wordt nu standaard alleen weergegeven voor de terminal (voor wijziging van dit gedrag kan de optie «-[no-]progress» worden gebruikt). Bovendien is er een nieuwe configuratieparameter fetch.writeCommitGraph toegevoegd, die de automatische update van het commit-graph-bestand inschakelt bij operaties «git fetch» (alle uit externe repositories opgehaalde commits komen onmiddellijk in de commit-graph zonder dat een aparte auto-gc hoeft te worden uitgevoerd);

  • Een commando is toegevoegd voor het herschrijven van de wijzigingsgeschiedenis — «git filter-repo«, wat een eenvoudigere alternatieve optie is voor het commando «git filter-branch» voor het uitvoeren van bewerkingen met de wijzigingsgeschiedenis in de repository (bijvoorbeeld het verwijderen van een bestand uit de repository of het extraheren van de wijzigingsgeschiedenis van een bepaalde map). Om de efficiëntie te verhogen, worden in «git filter-repo» de operaties uitgevoerd op een weergave van de geschiedenis in de vorm van een voortdurende stroom in plaats van op een opeenvolgende commit-gebaseerde analyse.

    De filtering van de geschiedenis wordt uitgevoerd met de optie «-path-{glob,regex}», waarmee zowel eenvoudige maskers als reguliere expressies kunnen worden toegepast. Er zijn ook opties beschikbaar voor het uitvoeren van de operatie «zoeken en vervangen» of het opschonen van binaire objecten die groter zijn dan een bepaalde grootte. Elke herschreven commit wordt voorzien van een nieuwe SHA-1 hash-identificatie en alle verwijzingen naar de vervangen commit worden bijgewerkt overeenkomstig de nieuwe identificatie.

    Voor het genereren van een samenvatting met statistieken over de repository (het aantal objecten per type, de grootste bestanden en mappen, welke extensies meer schijfruimte vereisen, enzovoort) is er een optie «-analyze». Voor het uitbreiden van functionaliteit is er de mogelijkheid om willekeurige callback-handlers in Python aan te sluiten, waarmee nieuwe subcommando's kunnen worden gemaakt en verschillende gebeurtenissen kunnen worden verwerkt (bijvoorbeeld nieuwe bestandstypen);

  • De optie «—end-of-options» is toegevoegd, waarmee opties van de naam van verwijzingen kunnen worden gescheiden, die met het teken «-» kunnen beginnen en als opties kunnen worden geïnterpreteerd («git log —end-of-options —super-dangerous-option»). Hoewel dergelijke namen in de praktijk kunnen worden geëscapeerd als «git log ‘refs/heads/—super-dangerous-option'», kunnen er in scripts problemen ontstaan met het bepalen van de naamruimte. De gebruikelijke scheidingstekens » — » zijn in dit geval niet toepasbaar, omdat ze al worden gebruikt voor het scheiden van namen van verwijzingen van bestanden (bijvoorbeeld «git log —end-of-options —super-dangerous-option ^master — path/to/file»);
  • In «git rebase —rebase-merges» zijn de opties «—strategy» en «—strategy-option» toegevoegd voor het selecteren van de samenvoegstrategie.;
  • Een nieuwe handler «.git/hooks/pre-merge-commit» is toegevoegd, die wordt aangeroepen na het uitvoeren van een samenvoeging, maar vóór het vastleggen van de resulterende commit;
  • De command auto-aanvullingsengine heeft ondersteuning gekregen voor het aanvullen van configuratievariabelen die zijn gebonden aan de instellingen van specifieke commando's.
    Bijvoorbeeld, als je «git -c core.autocrlf=false add path/to/my/file» moet typen, maar je herinnert je de exacte naam van de variabele «core.autocrlf» niet, kun je op Tab drukken voor een hint.

Bovendien hebben de ontwikkelaars van Git toegevoegd de gedragscode voor projectdeelnemers vastgesteld, die de basisprincipes voor het oplossen van conflicten definieert. Het document is gebaseerd op de aanbevelingen van «Contributor Covenant», die in veel open projecten worden toegepast, waaronder de Linux-kernel, Eclipse, Freedesktop, GitLab, Ruby en Kubernetes. Het document definieert gelijke kansen voor alle deelnemers, ongeacht hun wereldbeeld, leeftijd, geslacht, religieuze voorkeuren, opleidingsniveau, sociale status en nationaliteit. In de gemeenschap wordt een vriendelijke communicatiestijl, begrip en empathie voor de problemen van andere deelnemers, het accepteren van constructieve kritiek en het nemen van beslissingen die het beste zijn voor de hele gemeenschap gewaardeerd. Trolls, beledigende communicatiestijlen, pogingen tot vernedering, intimidatie, schending van de privacy, openbaarmaking van persoonlijke gegevens en andere gedragingen die als ongepast kunnen worden beschouwd in professionele communicatie zijn niet toegestaan.

Bron: opennet.ru

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