Eldono de fontkontrolo Git 2.39

Post du monatoj da evoluo, la distribuita fontkontrolsistemo Git 2.39 estis liberigita. Git estas unu el la plej popularaj, fidindaj kaj alt-efikecaj versikontrolaj sistemoj, kiu disponigas flekseblajn ne-liniajn evoluilojn bazitajn sur disbranĉiĝo kaj kunfandado de branĉoj. Por certigi la integrecon de la historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio en ĉiu kommit estas uzata, ankaŭ eblas kontroli individuajn etikedojn kaj kommitaĵojn per ciferecaj subskriboj de la programistoj.

Kompare kun la antaŭa eldono, 483 ŝanĝoj estis akceptitaj en la novan version, preparitan kun la partopreno de 86 programistoj, el kiuj 31 partoprenis la evoluon por la unua fojo. Ĉefaj novigoj:

  • Aldonis la opcion --group al la komando "git shortlog", kiu estas celita por montri resumojn kun statistikoj de la ŝanĝhistorio, por arbitra grupigo de kommits laŭ kampoj ne limigitaj al la aŭtoro aŭ komitanto. Ekzemple, por montri liston de programistoj kun informoj pri la nombro da ŝanĝoj, konsiderante la helpantojn menciitajn en la kampo "Co-authored-by", vi povas uzi la komandon: git shortlog -ns --group=author - -grupo=antaŭfilmo:kunaŭtoro-de

    La eligo de mallongaj protokoloj povas esti aldonita per formato-specifiloj, kaj la opcio "--grupo" povas multe simpligi la kreadon de kompleksaj raportoj kaj forigi pliajn ordigajn komandojn. Ekzemple, por generi raporton montrantan kiom da kommitaĵoj por donita eldono estis faritaj en ĉiu monato, vi povus uzi: 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 Antaŭe, sort kaj uniq estus bezonataj por fari similan operacion: git log v2.38.0.. --date ='formato:%Y -%m' --format='%cd' | ordigi | uniq -c

  • La kapabloj de la "cruft packs" mekanismo, dizajnita por paki neatingeblajn objektojn kiuj ne estas referenceitaj en la deponejo (branĉoj aŭ etikedoj ne estas referencitaj), estis vastigitaj. Neatingeblaj objektoj estas forigitaj de la rubkolektanto, sed restas en la deponejo dum certa tempo antaŭ forigo por eviti vetkurkondiĉojn. La mekanismo "cruft packs" permesas vin stoki ĉiujn neatingeblajn objektojn en unu paka dosiero, kaj reflekti la datumojn pri la modifa tempo de ĉiu objekto en aparta tabelo stokita en aparta dosiero kun la etendaĵo ".mtimes" por ke ili ne faru. interkovras kun la tuta modifa tempo.

    La tempo, kiun neatingeblaj objektoj pasigas en la deponejo antaŭ ol esti efektive forigitaj, estas determinita de la opcio "--prune= ". Dirite, dum prokrasti antaŭ forigo estas sufiĉe efika kaj praktika maniero malhelpi deponejon esti koruptita pro raskondiĉo, ĝi ne estas 100% fidinda. Por faciligi reakiri rompitan deponejon, la nova eldono provizas la kapablon konservi mankantajn objektojn aldonante la opcion "--expire-to" al la komando "git repack", kiu ebligas al vi specifi dosieron por krei eksteran. kopio de ĉiuj forigitaj objektoj. Ekzemple, por konservi neatingeblajn objektojn en la dosiero backup.git, kiuj ne ŝanĝiĝis en la lastaj 5 minutoj, vi povas uzi la komandon: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Signife pliigis (ĝis 70%) la rapidecon de la operacio "git grep --cached" dum serĉado en areoj, kiuj uzas partan klonadon (sparse-checkout) kaj por kiuj estas partaj indeksoj (maldensa indekso). Antaŭe, kiam oni specifis la opcion "--cached", oni serĉis unue la regulan indekson, kaj poste la partajn, kio kaŭzis rimarkindajn malfruojn dum serĉado de grandaj deponejoj.
  • Pli rapida ekzekuto en la servilo de kontrolado de la konektebleco de novaj objektoj antaŭ ol ili estas metitaj en la deponejon dum plenumado de la operacio "git push". Pro la transiro al konsidero kiam oni kontrolas nur deklaritajn ligilojn, en prova deponejo kun 7 milionoj da ligiloj, el kiuj nur 3% estas kovritaj de la puŝa operacio, la optimumigoj ebligis redukti la kontrolon de tempo je 4.5 fojojn.
  • Por protekti kontraŭ eventualaj entjeroj superfluoj en kodo, la komando "git apply" limigas la maksimuman grandecon de flikaĵoj kiuj povas esti prilaboritaj. Se la flikgrandeco superas 1 GB, eraro nun montriĝos.
  • Por protekti kontraŭ eblaj vundeblecoj, ŝanĝoj estis faritaj por purigi nenecesajn informojn de kaplinioj agordita dum uzado de la modulo h2h3 kun la opcio GIT_TRACE_CURL=1 aŭ GIT_CURL_VERBOSE=1 kune kun HTTP/2.
  • Dum elfarado de operacio sur branĉo kiu estas simbola ligo al alia branĉo, la komando "git symbolic-ref HEAD" nun presas la nomon de la cela branĉo prefere ol la nomo de la simbola ligo.
  • Aldonita subteno por la argumento @{-1} al la opcio "--edit-description" ("git branch --edit-description @{-1}") por redakti la priskribon de pasinta branĉo.
  • Aldonita "git merge-tree --stdin" komando por pasigi parametran liston per norma enigo.
  • En retaj dosiersistemoj, la fsmonitor-traktilo, kiu kontrolas ŝanĝojn en la dosiersistemo, estas malŝaltita defaŭlte.

fonto: opennet.ru

Aldoni komenton