Rilaxx tal-kontroll tas-sors Git 2.39

Wara xahrejn ta 'żvilupp, is-sistema ta' kontroll tas-sors distribwit Git 2.39 ġiet rilaxxata. Git hija waħda mis-sistemi ta 'kontroll tal-verżjoni l-aktar popolari, affidabbli u ta' prestazzjoni għolja, li tipprovdi għodod ta 'żvilupp mhux lineari flessibbli bbażati fuq fergħat u għaqda. Biex tiġi żgurata l-integrità tal-istorja u r-reżistenza għal bidliet retroattivi, f'kull impenn jintuża hashing impliċitu tal-istorja preċedenti kollha; huwa wkoll possibbli li jiġu ċertifikati tikketti individwali u impenji b'firem diġitali tal-iżviluppaturi.

Meta mqabbel mar-rilaxx ta 'qabel, il-verżjoni l-ġdida kienet tinkludi 483 tibdil, ippreparat bil-parteċipazzjoni ta' 86 żviluppatur, li minnhom 31 ħadu sehem fl-iżvilupp għall-ewwel darba. Innovazzjonijiet ewlenin:

  • Il-kmand "git shortlog", iddisinjat biex juri sommarji bi statistika mill-istorja tal-bidliet, żied għażla "-group" għal raggruppament arbitrarju ta 'commits minn oqsma mhux limitati għall-awtur jew kommitter. Pereżempju, biex turi lista ta' żviluppaturi b'informazzjoni dwar in-numru ta' bidliet, b'kont meħud tal-helpers imsemmija fil-qasam "Ko-awtur minn", tista' tuża l-kmand: git shortlog -ns --group=author - -grupp=karru:ko-awtur minn

    L-output ta 'Shortlog jista' jiġi aggregat bl-użu ta 'speċifikaturi tal-ifformattjar, u l-għażla "--group" tista' tissimplifika b'mod sinifikanti l-ħolqien ta 'rapporti kumplessi u telimina l-ħtieġa għal kmandi ta' għażla addizzjonali. Pereżempju, biex toħloq rapport b'informazzjoni dwar kemm ġew aċċettati impenji għal rilaxx partikolari f'kull xahar, tista' tispeċifika: 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 Qabel, biex titwettaq operazzjoni simili kien ikun meħtieġ li jintużaw l-utilitajiet sort u uniq: git log v2.38.0 .. —data='format:%Y -%m' —format='%cd' | sort | uniq -c

  • Il-kapaċitajiet tal-mekkaniżmu "cruft packs", iddisinjat għall-ippakkjar ta' oġġetti li ma jistgħux jintlaħqu li mhumiex referenzjati fir-repożitorju (mhux referenzjati minn fergħat jew tikketti), ġew estiżi. Oġġetti li ma jistgħux jintlaħqu huma mħassra mill-kollettur taż-żibel, iżda jibqgħu fir-repożitorju għal ċertu żmien qabel ma jitħassru biex jiġu evitati l-kundizzjonijiet tar-razza. Il-mekkaniżmu "cruft packs" jippermettilek taħżen l-oġġetti kollha li ma tistax tintlaħaq f'fajl ta' pakkett wieħed, u turi dejta dwar il-ħin tal-modifika ta' kull oġġett f'tabella separata, maħżuna f'fajl separat bl-estensjoni ".mtimes", sabiex jagħmlu ma jikkoinċidux mal-ħin totali tal-modifika.

    It-tul ta’ żmien li l-oġġetti li ma jintlaħqux jibqgħu fir-repożitorju qabel ma jitħassru fil-fatt huwa determinat mill-għażla “—prune=" " Madankollu, filwaqt li d-dewmien qabel it-tħassir huwa mod pjuttost effettiv u prattiku biex tiġi evitata l-korruzzjoni tar-repożitorju minħabba kundizzjonijiet tar-razza, mhuwiex 100% affidabbli. Biex tagħmilha aktar faċli li tirrestawra repożitorju bil-ħsara, ir-rilaxx il-ġdid jipprovdi l-abbiltà li tissejvja oġġetti neqsin billi żżid l-għażla "--expire-to" mal-kmand "git repack", li jippermettilek tispeċifika fajl biex toħloq esterna. kopja tal-oġġetti kollha mħassra. Pereżempju, biex tissejvja oġġetti li ma jistgħux jintlaħqu li ma nbidlux fl-aħħar 5 minuti fil-fajl backup.git, tista' tuża l-kmand: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Żiedet b'mod sinifikanti (sa 70%) il-veloċità tal-operazzjoni "git grep -cached" meta tfittex f'żoni li jużaw klonazzjoni parzjali (sparse-checkout) u li għalihom hemm indiċi parzjali (sparse index). Preċedentement, meta tiġi speċifikata l-għażla "-cached", it-tfittxija saret l-ewwel fl-indiċi regolari, u mbagħad f'dawk parzjali, li wassal għal dewmien notevoli meta tfittex f'repożitorji kbar.
  • Il-verifika tas-server tal-koerenza ta 'oġġetti ġodda qabel ma jitqiegħdu fir-repożitorju matul l-operazzjoni "git push" ġiet aċċellerata. Billi qalbet għall-kontabilità għal links iddikjarati biss meta tiċċekkja, f'repożitorju tat-test b'7 miljun link, li minnhom 3% biss huma koperti mill-operazzjoni push, l-ottimizzazzjonijiet li saru ppermettew li jitnaqqas il-ħin tal-iċċekkjar b'4.5 darbiet.
  • Biex tipproteġi kontra overflows ta' numru sħiħ potenzjali fil-kodiċi, il-kmand "git apply" jillimita d-daqs massimu tal-irqajja li jistgħu jiġu pproċessati. Jekk id-daqs tal-garża jaqbeż 1 GB, issa se jintwera żball.
  • Biex tipproteġi kontra vulnerabbiltajiet potenzjali, saru bidliet biex titnaddaf informazzjoni mhux meħtieġa mill-headers stabbiliti meta jintuża l-modulu h2h3 bl-għażla GIT_TRACE_CURL=1 jew GIT_CURL_VERBOSE=1 flimkien ma 'HTTP/2.
  • Meta twettaq check out fuq fergħa li hija rabta simbolika għal fergħa oħra, il-kmand "git symbolic-ref HEAD" issa juri l-isem tal-fergħa fil-mira aktar milli l-isem tas-simbolu.
  • Żid l-appoġġ għall-argument @{-1} mal-għażla “--edit-description” (“git fergħa —edit-description @{-1}”) għall-editjar tad-deskrizzjoni ta’ fergħa preċedenti.
  • Miżjud "git merge-tree --stdin" kmand biex jgħaddi lista ta 'għażliet permezz ta' input standard.
  • Fuq is-sistemi tal-fajls tan-netwerk, il-fsmonitor handler, li jimmonitorja l-bidliet fis-sistema tal-fajls, huwa diżattivat awtomatikament.

Sors: opennet.ru

Żid kumment