Efter tvÄ mÄnaders utveckling har en ny version av det distribuerade kÀllkodshanteringssystemet Git 2.35 publicerats. Git Àr ett av de mest populÀra, pÄlitliga och högpresterande versionshanteringssystemen, som erbjuder flexibla verktyg för icke-linjÀr utveckling baserad pÄ förgrening och sammanslagning av grenar. För att sÀkerstÀlla integriteten i historiken och motstÄndskraft mot sÄ kallade "backdate"-Àndringar anvÀnds implicit hashing av hela tidigare historik i varje commit, och det Àr ocksÄ möjligt att verifiera med digitala signaturer av utvecklare för specifika taggar och commits.
I jÀmförelse med den föregÄende versionen har 494 Àndringar antagits i den nya versionen, förberedda av 93 utvecklare, varav 35 deltog i utvecklingen för första gÄngen. De viktigaste nyheterna Àr:
- Möjligheterna att anvÀnda SSH-nycklar för att sÀkerstÀlla Git-objekt med digital signatur har utvidgats. För att sÀrskilja giltighetstiden för flera nycklar har stöd för OpenSSH-direktiv som "valid-before" och "valid-after" lagts till, vilket gör det möjligt att sÀkerstÀlla korrekt hantering av signaturer efter rotation av en av utvecklarnas nycklar. Tidigare fanns det problem med att separera signaturer med en gammal och en ny nyckel - om den gamla nyckeln raderades, gick det inte att verifiera signaturerna som gjordes med den, och om den lÀmnades kvar, fanns det möjlighet att skapa nya signaturer med den gamla nyckeln, trots att en annan nyckel redan hade tagits i bruk. Genom att anvÀnda valid-before och valid-after kan giltighetsomrÄdet för nycklarna sÀrskiljas pÄ basis av tidpunkten för signaturens skapande.
- I instÀllningen merge.conflictStyle, som gör det möjligt att vÀlja hur konfliktinformation ska visas vid sammanslagning, har stöd för lÀget "zdiff3" lagts till. Detta lÀge flyttar alla typiska rader angivna i början eller slutet av konflikten bortom konfliktomrÄdet, vilket möjliggör en mer kompakt presentation av informationen.
- Kommandot «git stash» har fĂ„tt ett nytt lĂ€ge «âstaged», som gör det möjligt att dölja endast Ă€ndringar som lagts till i indexet, till exempel i situationer dĂ€r det Ă€r nödvĂ€ndigt att tillfĂ€lligt skjuta upp delar av komplexa Ă€ndringar för att först kunna lĂ€gga till det som redan Ă€r klart, och sedan ta itu med resten vid ett senare tillfĂ€lle. LĂ€ge pĂ„minner om kommandot «git commit», som registrerar endast de Ă€ndringar som lagts i indexet, men istĂ€llet för att skapa en ny commit i «git stash âstaged» sparas resultatet i det temporĂ€ra omrĂ„det stash. NĂ€r Ă€ndringarna behövs kan de Ă„terstĂ€llas med kommandot «git stash pop».
- Kommandot «git log» har fĂ„tt en ny format-specifikator «âformat=%(describe)», som gör det möjligt att kombinera utdata frĂ„n «git log» med resultatet av att köra kommandot «git describe». Parametrarna för «git describe» anges direkt inom specifikatorn («âformat=%(describe:match=,exclude=)»), dĂ€r Ă€ven förkortade taggar kan inkluderas («âformat=%(describe:tags=)») och antalet hexadecimala tecken för objektidentifiering kan justeras («âformat=%(describe:abbrev=)»). Till exempel, för att visa de senaste 8 committerna vars taggar inte har en release-kandidat, och att ange 8-teckens identifierare, kan kommandot anvĂ€ndas: $ 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-g2b95d94b056ab v2.34.1-642-gb56bd95bbc8f7 v2.34.1-203-gffb9f2980902d v2.34.1-640-gdf3c41adeb212 v2.34.1-639-g36b65715a4132
- I instÀllningen user.signingKey har stöd för nya typer av nycklar införts, som inte Àr begrÀnsade till typen «ssh-» och ange den fullstÀndiga filvÀ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 över Ă€ndringar i lĂ€get «âhistogram» har ökats avsevĂ€rt, liksom vid anvĂ€ndning av alternativet «âcolor-moved-ws», som styr fĂ€rgmarkeringen av mellanslag i en fĂ€rgad diff.
- I kommandot «git jump», som anvĂ€nds för att ge Vim information om exakta hopp till den önskade positionen i filen vid hantering av sammanslagningskonflikter, granskning av skillnader eller utförande av sökoperationer, har möjligheten att begrĂ€nsa omfattningen av hanterade sammanslagningskonflikter införts. Till exempel, för att begrĂ€nsa operationerna enbart till katalogen «foo» kan «git jump merge â foo» anges, och för att utesluta katalogen «Documentation» frĂ„n hantering kan «git jump merge â â:^Documentation'» anvĂ€ndas.
- Det har utförts arbete med att standardisera anvÀndningen av typen "size_t" istÀllet för "unsigned long" för vÀrden som representerar storleken pÄ objekt, vilket möjliggjort anvÀndningen av filtren "clean" och "smudge" med filer större Àn 4 GB pÄ alla plattformar, inklusive plattformar med LLP64 datamodell, dÀr typen "unsigned long" Àr begrÀnsad till 4 byte.
- Till kommandot "git am" har alternativet "âempty=(stop|drop|keep)" lagts till, vilket möjliggör att vĂ€lja beteende för tomma meddelanden som inte innehĂ„ller patchar vid analys av patchar frĂ„n inkorgen. VĂ€rdet "stop" avslutar hela patchtillĂ€mpningsoperationen, "drop" hoppar över tom patch, "keep" skapar en tom commit.
- Kommandona "git reset", "git diff", "git blame", "git fetch", "git pull" och "git ls-files" har fÄtt stöd för partiella index (sparse index), vilket förbÀttrar prestanda och sparar utrymme i repositoryn dÀr partiell kloning (sparse-checkout) utförs.
- Kommandot "git sparse-checkout init" har förklarats som förÄldrat, och istÀllet bör "git sparse-checkout set" anvÀndas.
- En inledande implementation av den nya backend "reftable" för lagring av referenser, sÄsom grenar och taggar, i repositoryn har lagts till. Den nya backend anvÀnder blocklagring, som anvÀnds av projektet JGit och Àr optimerad för att lagra ett mycket stort antal referenser. Backend Àr för tillfÀllet inte integrerad med referenssystemet (refs) och Àr inte klar för praktisk anvÀndning.
- FÀrgschemat för kommandot "git grep" har anpassats för att överensstÀmma med GNU greps verktyg.
KĂ€lla: opennet.ru
