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

Pas dy muajsh zhvillimi, është publikuar lëshimi i sistemit të distribuara për menaxhimin e teksteve burimore Git 2.51. Git karakterizohet nga performanca e lartë dhe ofron mjete për zhvillimin jo linear, të bazuara në degëzimin dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe qëndrueshmërinë ndaj ndryshimeve "me prapaveprime", përdoren hash të implicit të gjithë historisë së mëparshme në çdo commit, si dhe autentifikimi me nënshkrime digjitale të zhvilluesve për etiketat dhe commits specifike. Kodi i Git shpërndahet nën licencën GPLv2+.

Në krahasim me lëshimin e kaluar, në versionin e ri janë pranuar 506 ndryshime, të përgatitura me pjesëmarrjen e 91 zhvilluesve (21 prej të cilëve janë pjesëmarrës për herë të parë në zhvillimin e Git). Novitetet kryesore (1, 2, 3):

  • Performanca e komandave "git push" dhe "git fetch" Ă«shtĂ« rritur nĂ« repository me numra tĂ« mĂ«dhenj referencash. ShpejtĂ«sia Ă«shtĂ« siguruar falĂ« pĂ«rditĂ«simit tĂ« referencave nĂ« mĂ«nyrĂ« paketore, ku nĂ« njĂ« transaksion pĂ«rpunohen disa referenca, pĂ«rveç krijimit tĂ« njĂ« transaksioni tĂ« veçantĂ« pĂ«r pĂ«rditĂ«simin e çdo reference. Optimizimi ka rritur ndjeshĂ«m shpejtĂ«sinĂ« e backend-it "reftable", i cili tani mbizotĂ«ron mbi performancĂ«n e backend-it "files". PĂ«r shembull, nĂ« njĂ« repository testues me 10 mijĂ« referenca, performanca e "git fetch" duke pĂ«rdorur backend-in "reftable" Ă«shtĂ« rritur 22 herĂ«, ndĂ«rsa duke pĂ«rdorur backend-in "files" Ă«shtĂ« rritur 1.25 herĂ«. Rritja pĂ«r "git push" ishte 18 dhe 1.21 herĂ«, pĂ«rkatĂ«sisht.
  • NjĂ« metodĂ« e re Ă«shtĂ« propozuar pĂ«r paketimin nĂ« skedarĂ«t pack tĂ« pjesĂ«ve tĂ« repository-t qĂ« nuk janĂ« tĂ« lidhura me ndjekjen e objekteve tĂ« papĂ«rftuara, pĂ«r tĂ« cilat nĂ« repository nuk ka referenca (as degĂ« as etiketat). Informacioni mbi objektet e papĂ«rftuara ruhet nĂ« skedarĂ«t e veçantĂ« pack ("cruft packs"), gjĂ« qĂ« ka sjellĂ« nevojĂ«n pĂ«r pasqyrimin e tyre nĂ« indekset e shumĂ«-paketave MIDX (multi-pack index) pĂ«r tĂ« pĂ«rfshirĂ« objektet qĂ« fillimisht ishin tĂ« papĂ«rftuara dhe ruheshin vetĂ«m nĂ« pack-cruft, por qĂ« mĂ« pas u bĂ«nĂ« tĂ« pĂ«rftuara pas njĂ« commit qĂ« u referohej atyre.

    Në versionin e ri, gjatë ri-pakimit të skedarëve pack, është siguruar ruajtja e kopjeve shtesë të objekteve të përftuara, të ruajtura vetëm në skedarë cruft. Një ndryshim i tillë garanton që në grupin e skedarëve pack, që përdoren për ruajtjen e objekteve të përftuara, nuk përfshihen objekte që lidhen me objekte të tjera, të ruajtura jashtë këtij grupi. Për përjashtimin nga indeksat e shumë-paketave (MIDX) të përmbajtjes së papërftuar të skedarëve cruft, është propozuar cilësimi "repack.MIDXMustContainCruft", i cili lejon një reduktim të dukshëm të madhësisë së këtyre indekseve. Aktivizimi i cilësimit në repository-t GitHub ka lejuar një reduktim të madhësisë së indekseve MIDX me 38%, një përshpejtim të shkrimit në indekset MIDX me 35% dhe një rritje të performancës së leximit me 5%.

  • NĂ« komandĂ«n "git pack-objects" Ă«shtĂ« shtuar opsioni "—path-walk", i cili pĂ«rfshin njĂ« metodĂ« tĂ« re pĂ«r grumbullimin e informacionit mbi objektet gjatĂ« ri-pakimit tĂ« skedarĂ«ve pack. NĂ« vend qĂ« tĂ« kalojĂ« objektet nĂ« rendin e revisioneve, duke pĂ«rdorur modin "—path-walk", objektet kalohen pĂ«rmes kalimit tĂ« rrugĂ«ve tĂ« skedarĂ«ve, çka lejon paketimin e gjithĂ«ve objekteve me tĂ« njĂ«jtĂ«n rrugĂ« skedari nĂ« njĂ« hap. Ky qasje ofron mundĂ«sinĂ« pĂ«r tĂ« pĂ«rjashtuar heuristikĂ«n qĂ« pĂ«rdor hashing pĂ«r tĂ« pĂ«rcaktuar lidhjen e objektit me rrugĂ«n e tij tĂ« skedarit dhe gjithashtu pĂ«r tĂ« eliminuar nevojĂ«n pĂ«r renditjen e objekteve para paketimit. Duke pĂ«rdorur modin "—path-walk", madhĂ«sia e skedarĂ«ve pack tĂ« gjeneruar Ă«shtĂ« dukshĂ«m mĂ« e vogĂ«l se ajo gjatĂ« grumbullimit tĂ« objekteve pĂ«rmes hashing.
  • Format e ri Ă«shtĂ« pĂ«rcaktuar pĂ«r shkĂ«mbimin e shteteve tĂ« ruajtura tĂ« punĂ«s dhe indekseve nĂ« repository, tĂ« krijuara duke pĂ«rdorur komandĂ«n "git stash". Formati i ri lejon kodimin e ndryshimeve tĂ« ruajtura (stash-e) si njĂ« sekuencĂ« komitĂ«ve. PĂ«r importimin dhe eksportimin janĂ« propozua nĂ«nkomandat "git stash import" dhe "git stash export", tĂ« cilat mund tĂ« pĂ«rdoren pĂ«r tĂ« transferuar shtetet e ruajtura nga njĂ« sistem nĂ« njĂ« tjetĂ«r dhe pĂ«r tĂ« kryer operacione push ose pull me kĂ«to shtete si me degĂ« tĂ« zakonshme ose etiketa. 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 shfaq pĂ«rmbajtjen e objekteve tĂ« caktuara, me pĂ«rdorimin e opsioneve "—batch" dhe "—batch-check" Ă«shtĂ« realizuar mundĂ«sia e shfaqjes sĂ« informacionit pĂ«r objektet e munguar (p.sh., pĂ«r shkak tĂ« dĂ«mtimeve nĂ« repository) dhe submodulet. MĂ« parĂ«, kur specifikohej rruga e njĂ« submoduli, komanda "git cat-file —batch-check" jepte "missing", ndĂ«rsa tani do tĂ« tregojĂ« identifikimin e objektit.
  • NĂ« komandĂ«n "git log" janĂ« angazhuar optimizime tĂ« bazuara nĂ« filtrat e Bloom pĂ«r tĂ« pĂ«rshpejtuar 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Ă« konsideruar eksperimentale. Komandat paraqiten si ekuivalentĂ« modernĂ« tĂ« «git checkout», duke ndarĂ« mundĂ«si tĂ« tilla tĂ« pak lidhura tĂ« kĂ«saj komande si manipulimi i degĂ«ve (kalimi dhe krijimi) dhe rikuperimi i skedarĂ«ve nĂ« katalogun e punĂ«s.
  • Komanda «git whatchanged», ekuivalente me «git log —raw», Ă«shtĂ« shpallur e vjetruar dhe Ă«shtĂ« planifikuar pĂ«r t'u hequr nĂ« degĂ«n Git 3.0.
  • NjĂ« opsion «—start-after» Ă«shtĂ« shtuar nĂ« komandĂ«n «git for-each-ref», i cili mund tĂ« pĂ«rdoret sĂ« bashku me opsionin «—count» pĂ«r organizimin e daljeve nĂ« faqe.
  • NjĂ« opsion «—compact-summary» Ă«shtĂ« shtuar nĂ« komandat «git merge» dhe «git pull» pĂ«r tĂ« pĂ«rdorur njĂ« format tĂ« kompakt tĂ« informacionit pĂ«rmbledhĂ«s pĂ«r ndryshimet nĂ« vend tĂ« formatit diffstat.
  • NĂ« bazĂ«n e kodit Git Ă«shtĂ« lejuar pĂ«rdorimi i fjalĂ«s kyçe «bool», e cila Ă«shtĂ« shfaqur nĂ« standardin C99. Gjithashtu janĂ« dokumentuar disa mundĂ«si tĂ« C99, tĂ« pĂ«rdorura eksperimentalisht nĂ« Git (pĂ«r shembull, nĂ« mesin e vitit 2026 planifikohet tĂ« lejohet pĂ«rdorimi i strukturave «(struct foo){ .member = value };»). NjĂ« kompilar me mbĂ«shtetje pĂ«r C99 Ă«shtĂ« i detyrueshĂ«m pĂ«r Git qĂ« nga viti 2021, por mundĂ«sitĂ« e specifikimit C99 po zbatohet mjaft me kujdes pĂ«r tĂ« ruajtur kompatibilitetin me kompilarĂ«t qĂ« vetĂ«m pjesĂ«risht mbĂ«shtesin kĂ«tĂ« standard.
  • Rregullat pĂ«r pranimin e patch-eve janĂ« ndryshuar pĂ«r tĂ« 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 pĂ«r pranimin e patch-eve nĂ« bĂ«rthamĂ«n Linux.
  • Lista e ndryshimeve qĂ« nuk janĂ« tĂ« pĂ«rshtatshme pĂ«r kompatibilitet Ă«shtĂ« pĂ«rditĂ«suar dhe do tĂ« zbatohen nĂ« degĂ«n Git 3.0. Ndryshimi mĂ« i rĂ«ndĂ«sishĂ«m nĂ« lĂ«shimin e ardhshĂ«m Git 3.0 Ă«shtĂ« kalimi me default nĂ« identifikuesit e objekteve tĂ« bazuara nĂ« algoritmin e hashing SHA-256 gjatĂ« inicializimit tĂ« depozitave tĂ« reja dhe aktivizimi i formatit «reftable» pĂ«r ruajtjen e referencave nĂ« dega dhe etiketa nĂ« depo (i aktivizuar nga ruajtja bllok prej projektit JGit, e optimizuar pĂ«r tĂ« ruajtur njĂ« numĂ«r shumĂ« tĂ« madh referencash).

Burimi: opennet.ru

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster