Lëshimi i kontrollit të burimit Git 2.39

Pas dy muajsh zhvillimi, sistemi i kontrollit të burimit të shpërndarë Git 2.39 është lëshuar. Git është një nga sistemet më të njohura, më të besueshme dhe me performancë të lartë të kontrollit të versioneve, duke ofruar mjete zhvillimi fleksibël jo-lineare të bazuara në degëzimin dhe bashkimin. Për të siguruar integritetin e historisë dhe rezistencën ndaj ndryshimeve retroaktive, hashimi i nënkuptuar i të gjithë historisë së mëparshme përdoret në çdo kryerje; është gjithashtu e mundur të certifikohen etiketat dhe detyrimet individuale me nënshkrime dixhitale të zhvilluesve.

Krahasuar me versionin e mëparshëm, versioni i ri përfshinte 483 ndryshime, të përgatitura me pjesëmarrjen e 86 zhvilluesve, nga të cilët 31 morën pjesë në zhvillim për herë të parë. Risitë kryesore:

  • Komanda "git shortlog", e krijuar për të shfaqur përmbledhje me statistika nga historia e ndryshimeve, ka shtuar një opsion "-grup" për grupimin arbitrar të kryerjeve sipas fushave që nuk kufizohen vetëm tek autori ose kryerësi. Për shembull, për të shfaqur një listë të zhvilluesve me informacion në lidhje me numrin e ndryshimeve, duke marrë parasysh ndihmësit e përmendur në fushën "Bashkëautor-nga", mund të përdorni komandën: git shortlog -ns --group=autor - -group=trailer:bashkautor-nga

    Prodhimi i shortlogut mund të grumbullohet duke përdorur specifikuesit e formatimit dhe opsioni "--grup" mund të thjeshtojë ndjeshëm krijimin e raporteve komplekse dhe të eliminojë nevojën për komanda shtesë të renditjes. Për shembull, për të krijuar një raport me informacion rreth numrit të kryerjeve për një lëshim të caktuar në çdo muaj, mund të specifikoni: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Më parë, për të kryer një operacion të ngjashëm do të kishte qenë e nevojshme të përdoreshin shërbimet e renditjes dhe uniq: git log2.38.0 vXNUMX. .. —date='format:%Y -%m' —format='%cd' | renditi | uniq -c

  • Aftësitë e mekanizmit të "paketave cruft", i krijuar për paketimin e objekteve të paarritshme që nuk janë të referuara në depo (të pa referuara nga degët ose etiketat), janë zgjeruar. Objektet e paarritshme fshihen nga mbledhësi i mbeturinave, por mbeten në depo për një kohë të caktuar përpara se të fshihen për të shmangur kushtet e garës. Mekanizmi "cruft packs" ju lejon të ruani të gjitha objektet e paarritshme në një skedar paketë dhe të shfaqni të dhëna për kohën e modifikimit të secilit objekt në një tabelë të veçantë, të ruajtur në një skedar të veçantë me shtesën ".mtimes", në mënyrë që ato të bëjnë të mos mbivendosen me kohën totale të modifikimit.

    Kohëzgjatja e kohës që objektet e paarritshme mbeten në depo përpara se të fshihen në të vërtetë përcaktohet nga opsioni "—prune=" " Megjithatë, ndërsa vonesa përpara fshirjes është një mënyrë mjaft efektive dhe praktike për të parandaluar korrupsionin e depove për shkak të kushteve të garës, ajo nuk është 100% e besueshme. Për ta bërë më të lehtë rikthimin e një depoje të dëmtuar, versioni i ri ofron mundësinë për të ruajtur objektet që mungojnë duke shtuar opsionin "--expire-to" në komandën "git repack", i cili ju lejon të specifikoni një skedar për të krijuar një skedar të jashtëm. kopjimi i të gjitha objekteve të fshira. Për shembull, për të ruajtur objekte të paarritshme që nuk kanë ndryshuar në 5 minutat e fundit në skedarin backup.git, mund të përdorni komandën: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Rritet ndjeshëm (deri në 70%) shpejtësia e operacionit "git grep -cached" kur kërkoni në zona që përdorin klonim të pjesshëm (sparse-checkout) dhe për të cilat ka indekse të pjesshme (indeks i rrallë). Më parë, kur specifikohej opsioni "-cached", kërkimi kryhej fillimisht në indeksin e rregullt, dhe më pas në ato të pjesshme, gjë që çoi në vonesa të dukshme gjatë kërkimit në depo të mëdha.
  • Është përshpejtuar verifikimi nga serveri i koherencës së objekteve të reja përpara se ato të vendosen në depo gjatë operacionit "git push". Duke kaluar në llogaritjen e vetëm lidhjeve të deklaruara gjatë kontrollit, në një depo testimi me 7 milionë lidhje, nga të cilat vetëm 3% mbulohen nga operacioni push, optimizimet e bëra lejuan uljen e kohës së kontrollit me 4.5 herë.
  • Për të mbrojtur nga tejkalimet e mundshme të numrave të plotë në kod, komanda "git apply" kufizon madhësinë maksimale të arnimeve që mund të përpunohen. Nëse madhësia e patch-it kalon 1 GB, tani do të shfaqet një gabim.
  • Për t'u mbrojtur nga dobësitë e mundshme, janë bërë ndryshime për të pastruar informacionin e panevojshëm nga kokat e vendosura kur përdorni modulin h2h3 me opsionin GIT_TRACE_CURL=1 ose GIT_CURL_VERBOSE=1 së bashku me HTTP/2.
  • Kur kryeni një kontroll në një degë që është një lidhje simbolike me një degë tjetër, komanda "git simbolic-ref HEAD" tani shfaq emrin e degës së synuar në vend të emrit të lidhjes simbolike.
  • Shtoi mbështetje për argumentin @{-1} në opsionin "--edit-description" ("git branch —edit-description @{-1}") për modifikimin e përshkrimit të një dege të mëparshme.
  • U shtua komanda "git merge-tree --stdin" për të kaluar një listë opsionesh përmes hyrjes standarde.
  • Në sistemet e skedarëve të rrjetit, mbajtësi i fsmonitor, i cili monitoron ndryshimet në sistemin e skedarëve, është i çaktivizuar si parazgjedhje.

Burimi: opennet.ru

Shto një koment