Release av Git 2.35 källkontrollsystem

Efter två månaders utveckling har det distribuerade källkontrollsystemet Git 2.35 släppts. Git är ett av de mest populära, pålitliga och högpresterande versionskontrollsystemen, som tillhandahåller flexibla icke-linjära utvecklingsverktyg baserade på förgrening och sammanslagning. För att säkerställa historiens integritet och motståndet mot retroaktiva förändringar används implicit hash av hela den tidigare historien i varje commit; det är också möjligt att certifiera individuella taggar och commits med digitala signaturer från utvecklarna.

Jämfört med den tidigare utgåvan inkluderade den nya versionen 494 ändringar, förberedda med deltagande av 93 utvecklare, varav 35 deltog i utvecklingen för första gången. Huvudsakliga innovationer:

  • Möjligheterna att använda SSH-nycklar för att digitalt signera Git-objekt har utökats. För att begränsa giltighetstiden för flera nycklar har stöd för OpenSSH-direktiven “valid-before” och “valid-after” lagts till, med vilka man kan säkerställa korrekt arbete med signaturer efter att nyckeln har roterats av någon av utvecklarna. Innan detta var det ett problem med separationen av signaturer med den gamla och nya nyckeln - om du tar bort den gamla nyckeln kommer det att vara omöjligt att verifiera signaturerna som gjorts med den, och om du lämnar den kommer det att förbli möjligt att skapa nya signaturer med den gamla nyckeln, som redan har ersatts av en annan nyckel. Genom att använda giltig-före och giltig-efter kan du separera omfattningen av nycklarna baserat på den tid då signaturen skapades.
  • I merge.conflictStyle-inställningen, som låter dig välja läge för att visa information om konflikter under en sammanslagning, har stöd för "zdiff3"-läget dykt upp, som flyttar alla standardlinjer som anges i början eller slutet av konflikten utanför konflikten område, vilket möjliggör en mer kompakt presentation av information.
  • Läget "--stage" har lagts till i kommandot "git stash", vilket gör att du bara kan dölja ändringar som lagts till i indexet, till exempel i en situation när du tillfälligt behöver skjuta upp några av de komplexa ändringarna för att först lägg till det som redan är klart och ta itu med resten efter ett tag. Läget liknar kommandot "git commit", skriver bara ändringarna som placerats i indexet, men istället för att skapa en ny commit i "git stash —stage", lagras resultatet i det tillfälliga stash-området. När ändringarna väl behövs kan de återställas med kommandot "git stash pop".
  • En ny formatspecifikation har lagts till i "git log"-kommandot, "-format=%(describe)", som låter dig kombinera utdata från "git log" med utdata från kommandot "git describe". Parametrarna för "git describe" anges direkt inuti specificatorn ("-format=%(describe:match= ,exkludera= )"), där du också kan inkludera förkortade taggar ("—format=%(describe:tags= )") och konfigurera antalet hexadecimala tecken för att identifiera objekt ("—format=%(describe:abbrev= )"). Till exempel, för att lista de senaste 8 commits vars taggar inte har en release candidate-tagg, och specificera 8-teckens identifierare, kan du använda kommandot: $ git log -8 —format='%(describe:exclude=*-rc *,abbrev=13 )' v2.34.1-646-gaf4e5f569bc89 v2.34.1-644-g0330edb239c24 v2.33.1-641-g15f002812f858 v2.34.1-643.abg-2d b95bd94 bbc056f2.34.1 v642-56-gffb95f8d v7-2.34.1- gdf203c9adeb2980902 v2.34.1-640-g3b41a212
  • Inställningen user.signingKey stöder nu nya typer av nycklar som inte är begränsade till typen "ssh-" och som anger den fullständiga sökvägen till nyckeln. Alternativa typer anges med prefixet "key::", till exempel "key::ecdsa-sha2-nistp256" för ECDSA-nycklar.
  • Hastigheten för att generera en lista med ändringar i "—histogram"-läget, såväl som när du använder alternativet "—color-moved-ws", som styr markeringen av utrymmen i färgdiff, har ökat märkbart.
  • Kommandot "git jump", som används för att ge Vim information om det exakta hoppet till önskad position i en fil när man analyserar sammanslagningskonflikter, tittar på skillnader eller utför en sökoperation, ger möjligheten att begränsa de sammanslagningskonflikter som täcks. Till exempel, för att begränsa operationer till enbart "foo"-katalogen, kan du ange "git jump merge - foo" och för att utesluta "Documentation"-katalogen från bearbetning - "git jump merge - ':^Documentation'"
  • Arbete har gjorts för att standardisera användningen av typen "size_t" istället för "unsigned long" för värden som representerar storleken på objekt, vilket gjorde det möjligt att använda "clean" och "sudge" filter med filer större än 4 GB på alla plattformar, inklusive plattformar med LLP64-datamodellen , typen "unsigned long" där är begränsad till 4 byte.
  • Alternativet "-empty=(stop|drop|keep)" har lagts till i kommandot "git am", vilket låter dig välja beteendet för tomma meddelanden som inte innehåller patchar när man analyserar patchar från brevlådan. Värdet "stopp" kommer att avsluta hela patchningsoperationen, "drop" hoppar över en tom patch och "keep" skapar en tom commit.
  • Lade till stöd för partiella index (glesa index) till kommandona "git reset", "git diff", "git blame", "git fetch", "git pull" och "git ls-files" för att förbättra prestanda och spara utrymme i repositories , där partiella kloningsoperationer (sparse-checkout) utförs.
  • Kommandot "git sparse-checkout init" har föråldrats och bör ersättas med "git sparse-checkout set".
  • Lade till initial implementering av en ny "reftable" backend för lagring av referenser som grenar och taggar i förvaret. Den nya backend använder blocklagring som används av JGit-projektet och är optimerad för att lagra mycket stora antal referenser. Backend är ännu inte integrerat med refs-systemet och är inte redo för praktisk användning.
  • Färgpaletten för kommandot "git grep" har justerats för att matcha GNU grep-verktyget.

Källa: opennet.ru

Lägg en kommentar