Po dveh mesecih razvoja je bila izdana različica distribuiranega sistema za upravljanje izvornih besedil Git 2.35. Git je eden najpopularnejših, zanesljivih in visokozmogljivih sistemov za upravljanje različic, ki ponuja prilagodljive možnosti nelinearnega razvoja, ki temeljijo na branjenju in združevanju vej. Za zagotavljanje celovitosti zgodovine in odpornosti na spremembe "za nazaj" se uporablja implicitno heširanje celotne prejšnje zgodovine v vsakem commit-u, prav tako je mogoča overitev z digitalnimi podpisi razvijalcev posameznih oznak in commit-ov.
V primerjavi s prejšnjo različico je nova različica sprejela 494 sprememb, pripravljenih s sodelovanjem 93 razvijalcev, od katerih je 35 prvič sodelovalo pri razvoju. Glavne novosti:
- Razširjene so možnosti uporabe SSH ključev za overitev Git objektov z digitalnim podpisom. Za ločevanje časa veljavnosti več ključev je dodana podpora za OpenSSH direktive „valid-before“ in „valid-after“, s katerima je mogoče zagotoviti pravilno delovanje z podpisi po rotaciji ključa enega od razvijalcev. Pred tem je nastal problem s ločevanjem podpisov starega in novega ključa — če je bil star ključ odstranjen, ni bilo mogoče preveriti podpisov, ki so bili narejeni s pomočjo tega ključa, medtem ko je ohranitev omogočila ustvarjanje novih podpisov s starim ključem, ki ga je že zamenjal nov ključ. S pomočjo valid-before in valid-after je mogoče ločiti področje veljavnosti ključev na podlagi časa ustvarjanja podpisa.
- V nastavitvi merge.conflictStyle, ki omogoča izbiro načina oblikovanja informacij o konfliktih pri združevanju, je bila dodana podpora za način „zdiff3“, ki premika vse tipične vrstice, navedene na začetku ali koncu konflikta, izven območja konflikta, kar omogoča dosego bolj kompaktne predstavitve informacij.
- Ukazatel ‚git stash‘ je dodat za režim ‚—staged‘, ki omogoča skrivanje le sprememb, dodanih v indeks, na primer v situacijah, ko je treba začasno odložiti del kompleksnih sprememb, da bi najprej dodali tisto, kar je že pripravljeno, in nato razrešiti preostalo čez čas. Ta način spominja na ukaz ‚git commit‘, ki beleži le spremembe, ki so v indeksu, vendar namesto ustvarjanja novega commit-a v ‚git stash —staged‘ se rezultat shrani v začasno področje stash. Ko bodo spremembe potrebne, jih lahko vrnete z ukazom ‚git stash pop‘.
- V ukaz ‚git log‘ je dodan nov specifikator formata ‚—format=%(describe)‘, ki omogoča uskladitev izhoda ‚git log‘ z rezultatom izvajanja ukaza ‚git describe‘. Parametri za ‚git describe‘ so navedeni neposredno znotraj specifikatorja (‚—format=%(describe:match=,exclude=)‘), v katerega je mogoče vključiti tudi skrajšane oznake (‚—format=%(describe:tags=)‘) in nastaviti število šestnajstiških znakov za identifikacijo objektov (‚—format=%(describe:abbrev=)‘). Na primer, za izhod 8 zadnjih commitov, katerih oznake nimajo oznake kandidata za izdajo, ter za določitev 8-znakovnih identifikatorjev, lahko uporabite ukaz: $ 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
- V nastavitvi user.signingKey je implementirana podpora za nove vrste ključev, ki niso omejeni na tip ‚ssh-‘ in navedbo celotne poti do datoteke s ključem. Alternativne vrste so določene s pomočjo predpona ‚key::‘, na primer ‚key::ecdsa-sha2-nistp256‘ za ključe ECDSA.
- Hitrost generiranja seznama sprememb v načinu ‚—histogram‘ je bila znatno povečana, prav tako pri uporabi možnosti ‚—color-moved-ws‘, ki ureja osvetljevanje presledkov v barvnem diff-u.
- V ukazu ‚git jump‘, ki se uporablja za zagotavljanje informacijem Vim o natančnih prehodih na iskano mesto v datoteki pri obravnavanju konfliktov združevanja, pregledovanju razlik ali izvajanju iskalnih operacij, je bila omogočena možnost ožjega obsega obravnavanih konfliktov združevanja. Na primer, za omejitev operacij le na imenik ‚foo‘ lahko navedete ‚git jump merge — foo‘, medtem ko lahko za izključitev imenika ‚Documentation‘ uporabite ‚git jump merge — ‘:^Documentation'‘.
- Završeno je standardiziranje korištenja tipa «size_t» umjesto «unsigned long» za vrijednosti koje predstavljaju veličinu objekata, što je omogućilo korištenje filtara «clean» i «smudge» s datotekama većim od 4 GB na svim platformama, uključujući platforme s LLP64 modelom podataka, gdje je tip «unsigned long» ograničen na 4 bajta.
- Tim «git am» dodana je opcija «—empty=(stop|drop|keep)», koja omogućava odabir ponašanja za prazne poruke koje ne sadrže patcheve prilikom analize patcheva iz poštanskog sandučića. Vrijednost «stop» završava cijelu operaciju primjene patcheva, «drop» preskoči prazni patch, a «keep» stvara prazan commit.
- Komandama «git reset», «git diff», «git blame», «git fetch», «git pull» i «git ls-files» dodana je podrška za djelomične indekse (sparse index), što poboljšava performanse i štedi prostor u repozitorijima u kojima se vrše djelomična kloniranja (sparse-checkout).
- Komanda «git sparse-checkout init» proglašena je zastarjelom, umjesto nje treba koristiti «git sparse-checkout set».
- Dodana je početna implementacija novog backend-a «reftable» za pohranu referenci, kao što su grane i oznake, u repozitoriju. Novi backend koristi blokovsko pohranjivanje koje primjenjuje projekt JGit i optimizirano je za pohranu velikog broja referenci. Backend još nije integriran s sustavom referenci (refs) i nije spreman za praktičnu upotrebu.
- Paleta boja tima «git grep» usklađena je s GNU grep alatom.
Izvor: opennet.ru
