Eldono de fontkontrolo Git 2.37

La liberigo de la distribua fontkontrola sistemo Git 2.37 estis anoncita. Git estas unu el la plej popularaj, fidindaj kaj alt-efikecaj versikontrolaj sistemoj, provizante flekseblajn ne-liniajn evoluilojn bazitajn sur disbranĉigo kaj kunfandado. Por certigi la integrecon de la historio kaj reziston al retroaktivaj ŝanĝoj, implicita hashing de la tuta antaŭa historio estas uzata en ĉiu komit; ankaŭ eblas atesti individuajn etikedojn kaj transdonojn per ciferecaj subskriboj de la programistoj.

Kompare kun la antaŭa eldono, la nova versio inkluzivas 395 ŝanĝojn, preparitajn kun la partopreno de 75 programistoj, el kiuj 20 unuafoje partoprenis en evoluo. Ĉefaj novigoj:

  • La mekanismo de partaj indeksoj (maldensa indekso), kovranta nur parton de la deponejo, estis preta por ĝeneraligita uzo. Partaj indeksoj povas plibonigi rendimenton kaj ŝpari spacon en deponejoj, kiuj plenumas partajn klonadon (maldensa-kontrolado) operaciojn aŭ funkcias kun nekompleta kopio de la deponejo. La nova eldono kompletigas la integriĝon de partaj indeksoj en la komandojn git show, git sparse-checkout kaj git stash. La plej rimarkinda rendimenta profito de uzado de partaj indeksoj estas vidata per la komando git stash, kiu vidis 80% pliiĝon en ekzekutrapideco en iuj situacioj.
  • Nova mekanismo de "cruft packs" estis efektivigita por paki neatingeblajn objektojn, kiuj ne estas referencitaj en la deponejo (ne referencitaj per branĉoj aŭ etikedoj). Neatingeblaj objektoj estas forigitaj de la rubkolektanto, sed restas en la deponejo dum certa tempo antaŭ ol ili estas forigitaj por eviti vetkurajn kondiĉojn. Por spuri la periodon de apero de neatingeblaj objektoj, necesas almeti etikedojn al ili kun la tempo de ŝanĝo de similaj objektoj, kio ne ebligas stoki ilin en unu pakdosiero, en kiu ĉiuj objektoj havas komunan ŝanĝotempon. Antaŭe, konservi ĉiun objekton en aparta dosiero kaŭzis problemojn kiam estis granda nombro da freŝaj, neatingeblaj objektoj kiuj ankoraŭ ne estis elekteblaj por forigo. La proponita "cruft packs" mekanismo permesas vin stoki ĉiujn neatingeblajn objektojn en unu paka dosiero, kaj reflekti datumojn pri la modifa tempo de ĉiu objekto en aparta tabelo stokita en dosiero kun la ".mtimes" etendo.
  • Por Vindozo kaj macOS, ekzistas enkonstruita mekanismo por spuri ŝanĝojn al la dosiersistemo, permesante al vi eviti ripetadon tra la tuta labordosierujo dum farado de operacioj kiel "git statuso". Antaŭe, por spuri ŝanĝojn, eksteraj servaĵoj por spuri ŝanĝojn en la FS, kiel Watchman, povus esti konektitaj per hokoj, sed tio postulis la instaladon de pliaj programoj kaj agordo. Nun la specifita funkcio estas enkonstruita kaj povas esti ebligita per la komando "git config core.fsmonitor true".
  • En la komando "git sparse-checkout", subteno por alternativo al la "—cone" reĝimo, la metodo de difinado de ŝablonoj por parta klonado, estis deklarita malnoviĝinta, kio permesas, kiam oni determinas la parton de la deponejo, kiu estas submetita. la klonadoperacio, por listigi individuajn dosierojn uzante la sintakson “.gitignore”, kiu ne permesas uzi por optimumigo partajn indeksojn.
  • Pliigita fleksebleco en agordo de la fsync() voko por flui ŝanĝojn al disko. Subteno por la "batch" sinkroniga strategio estis aldonita al la "core.fsyncMethod" parametro, kiu ebligas akceli laboron dum la verkado de granda nombro da individuaj dosieroj akumulante ŝanĝojn en la reskriba kaŝmemoro, kiu estas rekomencigita per ununura fsync() voki. La testo, kiu rezultigis 500 dosierojn aldonitajn per la komando "git add", estis kompletigita en 0.15 sekundoj kiam la nova reĝimo estis ebligita, dum vokado de fsync () daŭris 1.88 sekundojn por ĉiu dosiero, kaj sen uzi fsync - 0.06 sekundojn .
  • Branch-traversaj komandoj kiel "git log" kaj "git rev-list" nun havas opcion "-since-as-filter=X" kiu ebligas al vi filtri informojn pri kommits kiuj estas pli malnovaj ol "X". Male al la opcio "—since", la nova komando estas efektivigita kiel filtrilo, kiu ne ĉesigas la serĉon post la unua transdono pli malnova ol la specifita tempo.
  • En la komando "git remote", kiam oni specifigas la flagon "-v", informoj pri partaj klonoj de la deponejo montriĝas.
  • Aldonita "transfer.credentialsInUrl" agordo, kiu povas preni la valorojn "averti", "morti" kaj "permesi". Se vi specifas klartekstajn akreditaĵojn en la parametro "remote..url", provo fari "fetch" aŭ "puŝi" operaciojn finiĝos per eraro se la agordo "transfer.credentialsInUrl" estas agordita al "morto". , aŭ averto se agordita "averti" valoro.
  • Defaŭlte, la nova efektivigo de la interaga reĝimo de la komando "git add -i", reverkita de Perl al C, estas ebligita.

fonto: opennet.ru

Aldoni komenton