Pas tre muajsh zhvillimi, është lëshuar, sistemi i shpërndarë i menaxhimit të teksteve burimore Git 2.52. Git përfshin performancë të lartë dhe ofron mjete për zhvillim jo lineare, bazuar në ndarje dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "me retroaktivitet", përdoren hashing i implicit i gjithë historisë së mëparshme në çdo komitet, si dhe autenticiteti me nënshkrime digjitale të zhvilluesve për etiketat dhe komitetet e veçanta. Kodi i Git shpërndahet nën licencën GPLv2+.
Në krahasim me versionin e kaluar, versioni i ri ka pranuar 637 ndryshime, që janë përgatitur me pjesëmarrjen e 94 zhvilluesve (33 prej të cilëve morën pjesë për herë të parë në zhvillimin e Git). Novitetet kryesore (1, 2, 3):
- Shtuar komanda "git last-modified" për të treguar listën e skedarëve në një revizion të caktuar dhe komitetet që kanë sjellë ndryshime të fundit në secilin nga këta skedarë. $ git last-modified HEAD b56f6dcd7b4c90192018e848d0810f091d092913 test.h 29330ae4b820147c98e723399e9438c8bee60a8a test1.c 573ad8917beb99dc643b6e7f5c117a294384a575 test2.c
- Shtuar komanda "git repo" për të kryer veprime të lidhura me nxjerrjen e informacionit nga repozitorët. Propozohen dy nënkomanda - "git repo info" dhe "git repo structure", që nxjerrin informacion rreth konfigurations së repozitorit dhe të dhëna rreth strukturës së repozitorit (për shembull, mund të dihet numri i 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 | | * Rrethet | 854 | | * Të Tjera | 0 | | | | | * Objete të arritshme | | | * Numri | 518955 | | * Komitetet | 77469 | | * Pemët | 188865 | | * Blobët | 251631 | | * Etiketat | 990 |
- Në komandën "git refs" janë shtuar tre nënkomanda që unifikojnë operacionet e nivelit të ulët të lidhjeve që janë të shpërndara dhe të mbivendosura (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 lidhjeve (sikurse me "git pack-refs").
- "git refs list" - nxjerr lista e të gjitha lidhjeve (sikurse me "git for-each-ref" ose "git show-ref").
- "git refs exists" - kontrollon ekzistencën e një lidhjeje (analog "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, duke përdorur si identifikues objektesh në bazë të algoritmit SHA-1, ashtu dhe në bazë të SHA-256. Në komandën «git fast-import» është realizuar 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 menaxhimin e përpunimit të komiteteve dhe etiketave të nënshkruara në fazën e importimit (modi mund të marrë vlera 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ë reduktojë kohën e mbështetjes për depozitë të mëdha monorepozitoriumesh. Krahasuar me strategjinë e mëparshme, e cila përdorte logjikën e komandës «git gc», strategjia e re shmang repackimin e të gjitha objekteve dhe përjashton operacionet që kërkojnë shumë burime, siç është bashkimi i të gjitha skedarëve stack (kur është e mundur, bashkimi bëhet për pjesë dhe pa pastrimin e objekteve të fshiara).
- Komanda «git sparse-checkout clean» është shtuar për të thjeshtuar rikuperimin e gjendjes së katalogut të punës, duke eliminuar skedarët që nuk përputhen me definimin e ri të sparse-checkout, të cilat nuk duhet të jenë të pranishme në kopjen lokale në përputhje me parametrat aktualë të sparse-checkout.
- Për të eliminuar komplikimet nga kodi dhe për të thjeshtuar mirëmbajtjen, është bërë një ristrukturim për të reduktuar përdorimin e ndryshores globale the_repository.
- Përdorimi i filtrave Bloom është zgjeruar, një strukturë probabilistike për verifikimin e anëtarësisë në një grup, e cila lejon definimin e gabuar të një elementi të munguar, por përjashton humbjen e një elementi ekzistues. Filtrat Bloom tani përdoren për të shpejtuar 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ë një radhë prioritare. Në «git remote rename» janë përshpejtuar operacionet e rinomimit të lidhjeve. Në «git ls-files» është zgjeruar përdorimi i indekseve. Është shpejtuar ndjeshëm puna e komandës «git log -L», duke përjashtuar krahasimet e panevojshme tri-niveleshe gjatë përpunimit të bashkimeve të komiteteve. Janë bërë optimizime në bibliotekën xdiff.
- Është e mundur t'i përdorni realizimet në gjuhën Rust për disa funksione të brendshme, si kodimi dhe dekodimi i vlerave të numrave me gjatësi variable. Me parazgjedhje, kodi në Rust nuk përdoret dhe aktivizimi i tij kërkon që të specifikohet flagu i ndërtimit WITH_RUST. Në të ardhmen, pritet të ri-dizajnohen shumë komponentë të brendshëm të Git në Rust dhe të shtohet Rust si një nga varësitë e nevojshme në ndërtimin e Git 3.0.
- Lista e ndryshimeve që shkelin përputhshmërinë është përditësuar dhe do të zbatohet në degën Git 3.0. Në Git 3.0 është vendosur të ndryshohet konfigurimi init.defaultBranch me parazgjedhje në vlerën "main", dmth, në repozitorët e krijuar me komandën "git init", dega me parazgjedhje do të quhet "main" dhe jo "master". Gjithashtu, është shënuar kalimi në identifikues objektesh të bazuar në algoritmin e hash-it SHA-256 gjatë inicializimit të repozitorëve të rinj. Për të lehtësuar portabilitetin midis repozitorëve me identifikues objektesh bazuar në hash SHA-1 dhe SHA-256, është ofruar mundësia që në një repozitor që përdor një algoritëm hashing, të realizohen operacionet push dhe pull nga një repozitor që përdor një algoritëm tjetër hashing.
Burimi: opennet.ru
