Lëshimi i sistemit të menaxhimit të teksteve burimore Git 2.51

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

Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS 🔥 Blini hostim të besueshëm për faqe interneti me mbrojtje DDoS, serverë VPS VDS - ProHoster