Pas tre muajsh zhvillimi është lëshuar versioni i sistemit të shpërndarë për menaxhimin e kodeve burimor Git 2.52. Git dallon për performancën e lartë dhe ofron mjete për zhvillim jo-linear të bazuara në degëzim dhe bashkim të degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "në prapavijë", përdoren hash-imi implicit i gjithë historisë së mëparshme në çdo commit, si dhe certifikimi me nënshkrime digjitale të zhvilluesve për etiketat dhe commitet individuale. Kodi Git shpërndahet nën licencën GPLv2+.
Në krahasim me versionin e kaluar, versioni i ri përfshin 637 ndryshime, të përgatitura nga 94 zhvillues (33 prej tyre morën pjesë për herë të parë në zhvillimin e Git). Novitet kryesore (1, 2, 3):
- Shtohet komanda "git last-modified" për të shfaqur listën e skedarëve në revizionin e dhënë dhe commitet përmes të cilave janë bërë ndryshimet e fundit në secilin prej këtyre skedarëve. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
- Shtohet komanda «git repo» pĂ«r tĂ« kryer veprime qĂ« lidhen me tĂ«rheqjen e informacionit nga repozitori. JanĂ« propozuar dy nĂ«nkomanda â «git repo info» dhe «git repo structure», qĂ« japin informacion mbi konfigurimet e repozitorit dhe detaje mbi strukturĂ«n e kĂ«tij repozitori (p.sh., mund tĂ« mĂ«soni numrin e referencave dhe objekteve nĂ« repozitor). $ git repo info object.format references.format object.format=sha1 references.format=reftable $ git repo structure | Struktura e repozitorit | Vlera | | âââââââ | ââ | | * Referencat | | | * Numri | 1983 | | * DegĂ«t | 4 | | * Etiketat | 1125 | | * Lidhjet | 854 | | * TĂ« Tjera | 0 | | | | | * Objektet e arritshĂ«m | | | * Numri | 518955 | | * Komitetet | 77469 | | * PemĂ«t | 188865 | | * Blobet | 251631 | | * Etiketat | 990 |
- Në komandën «git refs» janë shtuar tre nënkomanda që unifikojnë operacionet e ulta niveli të shpërndara e me mbivendosje mbi referencat (git for-each-ref, git show-ref, git update-ref dhe git pack-refs):
- «git refs optimize» â optimizimi i backend-it pĂ«r ruajtjen e referencave (nĂ« mĂ«nyrĂ« tĂ« ngjashme me «git pack-refs»).
- «git refs list» â nxjerrja e njĂ« liste tĂ« tĂ« gjitha referencave (nĂ« mĂ«nyrĂ« tĂ« ngjashme me «git for-each-ref» ose «git show-ref»).
- «git refs exists» â kontrollimi i ekzistencĂ«s sĂ« njĂ« reference (analog me «git show-ref âexists»).
- Formati pĂ«r eksportimin ose importimin e historisĂ« sĂ« komiteteve Ă«shtĂ« zgjeruar me mundĂ«sinĂ« e punĂ«s me nĂ«nshkrime kriptografike, qĂ« pĂ«rdorin si identifikues objektesh bazuar nĂ« algoritmin SHA-1, ashtu si dhe ata qĂ« bazohen nĂ« SHA-256. NĂ« komandĂ«n «git fast-import» Ă«shtĂ« implementuar mbĂ«shtetje pĂ«r pĂ«rpunimin e etiketave tĂ« nĂ«nshkruara, nĂ« pĂ«rputhje me komitetet e nĂ«nshkruara. JanĂ« shtuar opsionet «âsigned-commits=» dhe «âsigned-tags=» pĂ«r tĂ« menaxhuar pĂ«rpunimin e komiteteve dhe etiketave tĂ« nĂ«nshkruara gjatĂ« fazĂ«s sĂ« importit (modusi mund tĂ« marrĂ« vlera si verbatim, warn-verbatim, warn-stri, strip ose abort).
- Në komandën «git maintenance» është shtuar mbështetje për strategjinë e re «geometric» («git config set maintenance.strategy geometric»), e cila lejon të reduktohet koha e mirëmbajtjes së monorepozitoreve të mëdha. Në krahasim me strategjinë e mëparshme, e cila përdorte logjikën si në komandën «git gc», strategjia e re shmang ripaketimin e të gjitha objekteve dhe përjashton operacionet e tepruara të kërkimit të burimeve, siç është bashkimi i të gjitha skedave të paketës (kur është e mundur, bashkimi bëhet në pjesë dhe pa pastrimin e objekteve të fshira).
- Shtuar komanda «git sparse-checkout clean» për të thjeshtuar rikuperimin e gjendjes së punës në katalogun, duke fshirë skedarët që nuk përputhen me përcaktimin e ri sparse-checkout, të cilët nuk duhet të jenë të pranishëm në kopjen lokale në përputhje me parametrat aktualë të sparse-checkout.
- Për të hequr kompleksitetin nga kodi dhe për të thjeshtuar mbështetje, është kryer refaktorim për të reduktuar përdorimin e variablës globale the_repository.
- ĂshtĂ« zgjeruar pĂ«rdorimi i filtrave Bloom, njĂ« strukturĂ« probabilistike pĂ«r tĂ« kontrolluar praninĂ« nĂ« njĂ« grup, e cila lejon identifikimin e gabuar tĂ« elementeve tĂ« munguar, por pĂ«rjashton humbjen e elementeve ekzistuese. Filtrat Bloom tani aplikohet pĂ«r tĂ« pĂ«rshpejtuar kĂ«rkimin nĂ« historinĂ« e ndryshimeve duke specifikuar maska nĂ« rrugĂ«t e skedarĂ«ve, pĂ«r shembull, «foo/bar/*/baz».
- Performanca e komandës «git describe» është rritur me 30%, falë përdorimit të radhëve prioritare. Operacionet e rinovimit të lidhjeve në «git remote rename» janë përshpejtuar. Përdorimi i indekseve është zgjeruar në «git ls-files». Funksioni «git log -L» është përshpejtuar ndjeshëm, duke eliminuar krahasimet e tepërta tre-nivele gjatë përpunimit të bashkimeve të komiteteve. Janë bërë optimizime në bibliotekën xdiff.
- ĂshtĂ« ofruar mundĂ«sia opsionale pĂ«r tĂ« pĂ«rdorur implementime nĂ« gjuhĂ«n Rust tĂ« disa funksioneve tĂ« brendshme, si kodimi dhe dekodimi i vlerave tĂ« numrave me gjatĂ«si tĂ« ndryshme. NĂ« mĂ«nyrĂ« tĂ« paracaktuar, kodi nĂ« Rust nuk pĂ«rdoret dhe pĂ«r tĂ« aktivizuar e kĂ«rkon pĂ«rcaktimin e flagut tĂ« ndĂ«rtimit WITH_RUST. NĂ« tĂ« ardhmen, pritet qĂ« shumĂ« komponentĂ« tĂ« brendshĂ«m tĂ« Git tĂ« rimarrin formĂ« nĂ« Rust dhe tĂ« shtohet Rust nĂ« listĂ«n e varĂ«sive tĂ« detyrueshme tĂ« ndĂ«rtimit nĂ« Git 3.0.
- Lista e azhurnuar e ndryshimeve që shkelin përputhshmërinë, të cilat do të aplikohen në degën Git 3.0. Në Git 3.0 është vendosur të ndryshohet cilësimi init.defaultBranch si parazgjedhje në vlerën "main", që do të thotë se në repo- këtë krijuar me komandën "git init", dega e parazgjedhur do të quhet "main", dhe jo "master". Po ashtu, është vënë re kalimi në identifikuesit e objekteve të bazuar në algoritmin e hash-it SHA-256 gjatë inicializimit të repove të reja. Për të thjeshtuar transportueshmërinë midis repove me identifikues objekte të bazuar në hash SHA-1 dhe SHA-256, është ofruar mundësia në një repo me një algoritëm hash, të kryhen operacionet push dhe pull nga një repo që përdor një algoritëm tjetër hash.
Burimi: opennet.ru
