Pas dy muajve zhvillimi, u prezantua versioni i sistemit të menaxhimit të teksteve burimore të shpërndara Git 2.51. Git përfshin një performancë të lartë dhe ofron mjete për zhvillimin jo-lineare, të bazuara në degëzimin dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrushmërinë ndaj ndryshimeve 'retroaktive', përdoret hashingu implicit i gjithë historisë përkatëse në çdo commit, si dhe autentikimi me nënshkrime digjitale të zhvilluesve për etiketa dhe commit-e të veçanta. Kodi i Git shpërndahet nën licencën GPLv2+.
Krahasuar me versionin e kaluar, versioni i ri përmban 506 ndryshime, të përgatitura me pjesëmarrjen e 91 zhvilluesve (21 prej tyre kanë marrë pjesë për herë të parë në zhvillimin e Git). Risitë kryesore (1, 2, 3):
- Performanca e komandave 'git push' dhe 'git fetch' është rritur në depo me numër të madh të lidhjeve. Shpejtësia është përmirësuar falë azhornimit të lidhjeve në mënyrë grupore, ku në një transaksion përpunohen disa lidhje njëherësh, në vend të krijimit të një transaksioni të veçantë për azhornimin e çdo lidhjeje. Optimizimi ka rritur ndjeshëm shpejtësinë e backend-it 'reftable', i cili tashmë e tejkalon performancën e backend-it 'files'. Për shembull, në një depo testuese me 10,000 lidhje, performanca e 'git fetch' kur përdoret backend-i 'reftable' është rritur 22 herë, ndërsa për backend-in 'files' ka pasur një rritje prej 1.25 herë. Ndërsa për 'git push', rritja ka qenë 18 dhe 1.21 herë, respektivisht.
- Një metodë e re e paketimit në skedarët e paketave për pjesët e depozitës, të cilat nuk lidhen me ndjekjen e objekteve të paarritshme, për të cilat nuk ka lidhje në depo (nuk referohen nga degë ose etiketa). Informacioni mbi objektet e paarritshme ruhet në skedarë të veçantë pakete ('cruft packs'), çka ka sjellë nevojën për reflektimin e tyre në indekse multi-pakete MIDX (multi-pack index) për të përfshirë objektet, të cilat fillimisht ishin të paarritshme dhe ruheshin vetëm në cruisht-paketë, por më pas janë bërë të arritshme pas një commit-i që i referohet atyre.
Në versionin e ri, gjatë ripakimit të skedarëve pack, është siguruar ruajtja e kopjeve shtesë të objekteve të arritshme, të ruajtura vetëm në skedarët cruft. Ky ndryshim garanton që në grupin e skedarëve pack, të përdorur për ruajtjen e objekteve të arritshme, nuk përfshihen objekte që referohen në objekte të tjera, të ruajtura jashtë këtij grupi. Për të përjashtuar përmbajtjen e paqëllimshme cruft nga indeksat multi-pack (MIDX), është propozuar konfigurimi 'repack.MIDXMustContainCruft', i cili lejon të reduktohet ndjeshëm madhësia e tillë e indekseve. Aktivizimi i konfigurimit në depo GitHub ka lejuar të reduktohet madhësia e indekseve MIDX me 38%, të shpejtohet shkrimi në indekset MIDX me 35% dhe të rritet performanca e leximit me 5%.
- NĂ« komandĂ«n 'git pack-objects' Ă«shtĂ« shtuar opsioni 'âpath-walk', i cili pĂ«rfshin njĂ« metodĂ« tĂ« re pĂ«r mbledhjen e informacionit mbi objektet gjatĂ« ripakimit tĂ« skedarĂ«ve pack. NĂ« vend tĂ« kalimit tĂ« objekteve sipas rendit tĂ« revizionit, kur pĂ«rdoret reĆŸimi 'âpath-walk', objektet kalohen pĂ«rmes rrugeve tĂ« skedarĂ«ve, e cila lejon paketimin e tĂ« gjitha objekteve me tĂ« njĂ«jtĂ«n rrugĂ« skedari njĂ«herĂ«sh. Ky qasje pĂ«rjashton heuristikĂ«n qĂ« pĂ«rdor hashing pĂ«r tĂ« pĂ«rcaktuar lidhjen e objektit me rrugĂ«n e tij skedari, si dhe eliminon nevojĂ«n pĂ«r renditjen e objekteve para paketimit. Kur pĂ«rdoret regjimi 'âpath-walk', madhĂ«sia e skedarĂ«ve pack tĂ« gjeneruar Ă«shtĂ« dukshĂ«m mĂ« e vogĂ«l se ajo e grupeve tĂ« objekteve duke pĂ«rdorur hash.
- ĂshtĂ« pĂ«rcaktuar formati pĂ«r shkĂ«mbimin e gjendjeve tĂ« ruajtura tĂ« pemĂ«s sĂ« punĂ«s dhe indekseve nĂ« depo, tĂ« krijuara me komandĂ«n 'git stash'. Formati i ri lejon kodimin e ndryshimeve tĂ« ruajtura (stash-tĂ«) nĂ« formĂ«n e njĂ« sekuence komitĂ«sh. PĂ«r importin dhe eksportin janĂ« propozuar nĂ«nkomandat 'git stash import' dhe 'git stash export', tĂ« cilat mund tĂ« pĂ«rdoren pĂ«r tĂ« transferuar gjendjet e ruajtura nga njĂ« sistem nĂ« tjetrin dhe pĂ«r tĂ« kryer operacione push ose pull me kĂ«to gjendje si me degĂ« ose etiketa tĂ« zakonshme. git stash export âto-ref refs/stashes/my-stash git push origin refs/stashes/my-stash ⊠git fetch origin '+refs/stashes/*:refs/stashes/*' git stash import refs/stashes/my-stash
- NĂ« komandĂ«n «git cat-file», e cila jep pĂ«rmbajtjen e objekteve tĂ« caktuara, pĂ«rmes opsioneve «âbatch» dhe «âbatch-check» Ă«shtĂ« realizuar mundĂ«sia pĂ«r tĂ« shfaqur informacion nĂ« lidhje me objektet qĂ« mungojnĂ« (p.sh., pĂ«r shkak tĂ« dĂ«mtimit tĂ« repositorit) dhe submodulet. MĂ« parĂ«, kur specifikohej pĂ«r submodulin, komanda «git cat-file âbatch-check» shfaqi «missing», ndĂ«rsa tani do tĂ« tregojĂ« identifikuesin e objektit.
- NĂ« komandĂ«n «git log» janĂ« pĂ«rdorur optimizime bazuar nĂ« filtrat e Bloom pĂ«r tĂ« shpejtuar kĂ«rkimin nĂ« historinĂ« e ndryshimeve kur specifikohen filtra me disa rrugĂ« skedari, pĂ«r shembull, «git log â path/to/a path/to/b».
- Komandat «git switch» dhe «git restore» janë stabilizuar, të cilat që nga viti 2019 janë shqyrtuar si eksperimentale. Komandat paraqiten si ekuivalenti modern i «git checkout», duke ndarë mundësi të natyrës së ndryshme të kësaj komande, si manipulimi i degëve (kthimi dhe krijimi) dhe rikthimi i skedarëve në katalogun e punës.
- Komanda «git whatchanged», ekuivalente e «git log âraw», Ă«shtĂ« shpallur e vjetruar dhe e planifikuar pĂ«r t'u hequr nĂ« degĂ«n Git 3.0.
- NĂ« komandĂ«n «git for-each-ref» Ă«shtĂ« shtuar opsioni «âstart-after», i cili mund tĂ« pĂ«rdoret sĂ« bashku me opsionin «âcount» pĂ«r tĂ« organizuar outputin nĂ« faqe.
- NĂ« komandat «git merge» dhe «git pull» Ă«shtĂ« shtuar opsioni «âcompact-summary» pĂ«r tĂ« pĂ«rdorur njĂ« format tĂ« pĂ«rmbledhur tĂ« informacionit mbi ndryshimet nĂ« vend tĂ« formatit diffstat.
- Në bazën e kodit Git është lejuar përdorimi i fjalës kyçe «bool», e cila ka dalë në standardin C99. Po ashtu, janë dokumentuar disa mundësi të C99, të përdorura eksperimentalisht në Git (p.sh., në mes të vitit 2026 planifikohet të lejohet përdorimi i konstruktimeve «(struct foo){ .member = value };»). Kompajleri me mbështetje për C99 është i detyrueshëm për Git që nga viti 2021, por mundësitë e specifikimit C99 po implementohen me kujdes për të ruajtur përputhshmërinë me kompajlerët që e mbështesin pjesërisht këtë standard.
- Në rregullat e pranim-shkëmbimit të patch-eve janë bërë ndryshime, duke lejuar dërgimin e patch-eve nën një pseudonim, jo vetëm nën emrin e vërtetë të zhvilluesit. Ky ndryshim përputhet me rregullat e pranim-shkëmbimit të patch-eve në bërthamën Linux.
- Lista e azhurnuar e ndryshimeve që shkelin përputhshmërinë, të cilat do të aplikohen në degën Git 3.0. Një nga ndryshimet e rëndësishme në versionin e ardhshëm të Git 3.0 është kalimi në identifikues objektesh të bazuar në algoritmin e hashing-it SHA-256 si parazgjedhje gjatë inicializimit të repozitorëve të rinj dhe aktivizimi i formatit "reftable" për ruajtjen në repozitor të referencave për degët dhe etiketat (aktivizimi i depozitës bllok nga projekti JGit, e optimizuar për ruajtjen e një numri shumë të madh referencash).
Burimi: opennet.ru
