Po dveh mesecih razvoja je bil izdan porazdeljeni sistem za nadzor vira Git 2.35. Git je eden najbolj priljubljenih, zanesljivih in visoko zmogljivih sistemov za nadzor različic, ki zagotavlja prilagodljiva nelinearna razvojna orodja, ki temeljijo na razvejanju in združevanju. Za zagotovitev celovitosti zgodovine in odpornosti proti retroaktivnim spremembam se v vsaki objavi uporablja implicitno zgoščevanje celotne prejšnje zgodovine, možno je tudi certificirati posamezne oznake in objave z digitalnimi podpisi razvijalcev.
V primerjavi s prejšnjo izdajo nova različica vključuje 494 sprememb, pripravljenih s pomočjo 93 razvijalcev, od katerih jih je bilo 35 novih v projektu. Ključne nove funkcije vključujejo:
- Razširjena je bila možnost uporabe ključev SSH za digitalno podpisovanje objektov Git. Za razlikovanje veljavnosti več ključev je bila dodana podpora za direktivi OpenSSH »veljaven pred« in »veljaven po«. Ti direktivi zagotavljata pravilno obdelavo podpisov po rotaciji ključa razvijalca. Prej je prišlo do težave z ločevanjem podpisov, ustvarjenih s starim in novim ključem: brisanje starega ključa bi preprečilo preverjanje podpisov, ustvarjenih z njim, če pa bi ga pustili, bi bilo mogoče ustvariti nove podpise s starim ključem, čeprav je bil že nadomeščen z drugim ključem. Z uporabo direktiv »veljaven pred« in »veljaven po« lahko ločite veljavnost ključev glede na čas ustvarjanja podpisa.
- Nastavitev merge.conflictStyle, ki omogoča izbiro načina oblikovanja za informacije o konfliktih združevanja, zdaj podpira način »zdiff3«, ki premakne vse standardne vrstice, določene na začetku ali koncu konflikta, zunaj območja konflikta, kar omogoča bolj kompaktno predstavitev informacij.
- Ukaz »git stash« ima zdaj način »--staged«. Ta način vam omogoča shranjevanje samo sprememb, ki so bile dodane v zalogo, na primer, ko morate začasno odložiti nekatere kompleksne spremembe, da dodate tisto, kar je že na mestu, in se z ostalim ukvarjate kasneje. Ta način je podoben ukazu »git commit«, ki zapisuje samo spremembe, ki so bile dodane v zalogo, vendar namesto ustvarjanja novega zapisa »git stash --staged« shrani rezultat v začasno območje zaloge. Ko potrebujete spremembe, jih lahko vrnete nazaj z »git stash pop«.
- Ukazu »git log« je bil dodan nov specifikator formata »--format=%(describe)«, ki omogoča združevanje izhoda ukaza »git log« z izhodom ukaza »git describe«. Parametri za »git describe« so določeni neposredno znotraj specifikatorja (»--format=%(describe:match=")« ,izključi= )"), ki lahko vključuje tudi skrajšane oznake ("—format=%(describe:tags= )") in konfigurirajte število šestnajstiških znakov za identifikacijo objektov ("—format=%(describe:abbrev= )"). Na primer, za prikaz zadnjih 8 zapisov, katerih oznake nimajo oznake kandidata za izdajo in določitev 8-mesčnih ID-jev, 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
- Nastavitev user.signingKey zdaj podpira nove tipe ključev, ki niso omejeni na tip »ssh-« in celotno pot datoteke do ključa. Alternativni tipi so določeni s predpono »key::«, na primer »key::ecdsa-sha2-nistp256« za ključe ECDSA.
- Hitrost ustvarjanja dnevnika sprememb v načinu »--histogram« se je opazno povečala, prav tako pri uporabi možnosti »--color-moved-ws«, ki nadzoruje označevanje vrzeli v barvni razliki.
- Ukaz »git jump«, ki se uporablja za zagotavljanje natančnih informacij o skokih Vimu pri analizi konfliktov združevanja, ogledu razlik ali izvajanju iskanja, zdaj omogoča zožitev obsega konfliktov združevanja. Na primer, če želite omejiti operacije na imenik »foo«, lahko določite »git jump merge - foo«, če pa želite iz obdelave izključiti imenik »Dokumentacija«, lahko določite »git jump merge - ':^Dokumentacija'«.«
- Izvedeno je bilo delo za standardizacijo uporabe tipa "size_t" namesto "unsigned long" za vrednosti, ki predstavljajo velikost objektov, kar je omogočilo uporabo filtrov "clean" in "smudge" za datoteke, večje od 4 GB, na vseh platformah, vključno s platformami s podatkovnim modelom LLP64, kjer je tip "unsigned long" omejen na 4 bajte.
- Ukaz »git am« ima zdaj možnost »--empty=(stop|drop|keep)«. To vam omogoča, da določite vedenje za prazna e-poštna sporočila, ki ne vsebujejo popravkov, pri razčlenjevanju popravkov iz nabiralnika. Vrednost »stop« bo prekinila celotno uporabo popravka, »drop« bo preskočil prazen popravek, »keep« pa bo ustvaril prazen zapis (commit).
- Ukazi git reset, git diff, git blame, git fetch, git pull in git ls-files zdaj podpirajo redke indekse, kar izboljšuje zmogljivost in prihrani prostor v repozitorijih, ki izvajajo operacije redkega prevzema.
- Ukaz 'git sparse-checkout init' je zastarel in namesto njega je treba uporabiti 'git sparse-checkout set'.
- Dodana je bila začetna implementacija novega »reftable« za shranjevanje referenc, kot so veje in oznake, v repozitoriju. Novo zaledno okolje uporablja blokovno shranjevanje, kot ga uporablja projekt JGit, in je optimizirano za shranjevanje zelo velikega števila referenc. Zaledno okolje še ni integrirano s sistemom refs in ni pripravljeno za praktično uporabo.
- Barvna paleta ukaza »git grep« je bila prilagojena tako, da se ujema z orodjem GNU grep.
Vir: opennet.ru
