Release fan Git 2.37 boarne kontrôle systeem

De frijlitting fan it ferspraat boarnekontrôlesysteem Git 2.37 is oankundige. Git is ien fan 'e populêrste, betroubere en heechprestearjende ferzjekontrôlesystemen, en leveret fleksibele net-lineêre ûntwikkelingsark basearre op fertakking en gearfoeging. Om de yntegriteit fan 'e skiednis en ferset tsjin retroaktive feroarings te garandearjen, wurdt ymplisyt hashing fan' e heule foarige skiednis brûkt yn elke commit; it is ek mooglik om yndividuele tags te sertifisearje en commits mei digitale hantekeningen fan 'e ûntwikkelders.

Yn ferliking mei de foarige release waarden 395 wizigingen oannommen yn 'e nije ferzje, taret mei de dielname fan 75 ûntwikkelders, wêrfan 20 foar it earst meidien oan ûntwikkeling. Wichtichste ynnovaasjes:

  • It meganisme fan parsjele yndeksen (sparse yndeks), dy't mar in diel fan 'e repository beslacht, is klear brocht foar wiidferspraat gebrûk. Diellike yndeksen kinne prestaasjes ferbetterje en romte besparje yn repositories dy't in part cloning (sparse-checkout) operaasjes útfiere of wurkje mei in ûnfolsleine kopy fan 'e repository. De nije release foltôget de yntegraasje fan dielde yndeksen yn 'e git-show, git sparse-checkout, en git-stash-kommando's. It meast opfallende prestaasjefoardiel fan it brûken fan partiel yndeksen wurdt sjoen mei it git stash kommando, dat yn guon situaasjes in 80% ferheging fan útfieringssnelheid hat sjoen.
  • In nij "cruft packs" meganisme is ymplementearre foar it ynpakken fan ûnberikbere objekten dy't net wurde ferwiisd yn 'e repository (net ferwiisd troch tûken of tags). Unberikbere objekten wurde wiske troch de garbage collector, mar bliuwe yn 'e repository foar in bepaalde tiid foardat se wiske wurde om racebetingsten te foarkommen. Om de perioade fan it foarkommen fan ûnberikbere objekten te folgjen, is it nedich om tags oan har te heakjen mei de tiid fan feroaring fan ferlykbere objekten, wat net tastean se op te slaan yn ien pakketbestân wêryn alle objekten in mienskiplike feroaringstiid hawwe. Earder late it bewarjen fan elk objekt yn in aparte triem ta problemen doe't der in grut oantal farske, net te berikken objekten wiene dy't noch net yn oanmerking komme foar wiskjen. De foarstelde "cruft packs" meganisme kinne jo opslaan alle unreachable foarwerpen yn ien pakket triem, en reflektearje gegevens oer de wiziging tiid fan elk foarwerp yn in aparte tabel opslein yn in triem mei de ".mtimes" extension.
  • Foar Windows en macOS is d'r in ynboude meganisme foar it folgjen fan wizigingen yn it bestânsysteem, wêrtroch jo iterearjen oer de heule wurkmap kinne foarkomme by it útfieren fan operaasjes lykas "git status". Earder, om feroarings te folgjen, kinne eksterne nutsbedriuwen foar it folgjen fan feroaringen yn 'e FS, lykas Watchman, wurde ferbûn fia heakken, mar dit easke de ynstallaasje fan ekstra programma's en konfiguraasje. No is de oantsjutte funksjonaliteit ynboud en kin ynskeakele wurde mei it kommando "git config core.fsmonitor true".
  • Yn it kommando "git sparse-checkout" is stipe foar in alternatyf foar de "-kegel" modus, de metoade foar it definiearjen fan sjabloanen foar partiel klonen, ferâldere ferklearre, wat it mooglik makket by it bepalen fan it diel fan 'e repository dat ûnderwerp is oan de cloning operaasje, te list yndividuele triemmen mei help fan de ".gitignore" syntaksis, dy't net tastean gebrûk foar optimalisaasje partiel yndeksen.
  • Fergrutte fleksibiliteit by it konfigurearjen fan de fsync ()-oprop om feroarings op skiif te spoelen. Stipe foar de "batch" syngronisaasje strategy is tafoege oan de "core.fsyncMethod" parameter, dat makket it mooglik om flugger wurk by it skriuwen fan in grut oantal yndividuele triemmen troch it sammeljen fan feroarings yn de writeback cache, dat wurdt weromset troch in inkele fsync () belje. De test, dy't resultearre yn 500 triemmen wurde tafoege mei help fan de "git add" kommando, waard foltôge yn 0.15 sekonden doe't de nije modus wie ynskeakele, wylst it oproppen fan fsync () naam 1.88 sekonden foar eltse triem, en sûnder gebrûk fsync - 0.06 sekonden.
  • Branch-traversal-kommando's lykas "git log" en "git rev-list" hawwe no in opsje "-since-as-filter=X" wêrmei jo ynformaasje kinne filterje oer commits dy't âlder binne dan "X". Oars as de opsje "—sûnt", wurdt it nije kommando ymplementearre as in filter dat it sykjen net stopet nei de earste commit âlder dan de opjûne tiid.
  • Yn it kommando "git remote", as jo de flagge "-v" spesifisearje, wurdt ynformaasje oer parsjele klonen fan it repository werjûn.
  • Tafoege "transfer.credentialsInUrl" ynstelling, dy't de wearden "warskôgje", "die" en "tastean" kinne nimme. As oantsjutte yn de parameter "remote. .url" plaintext credentials, besykjen in "fetch" of "push" operaasje út te fieren sil mislearje mei in flater as de "transfer.credentialsInUrl" ynstelling is ynsteld op "die", of in warskôging as ynsteld op "warn".
  • Standert is de nije ymplemintaasje fan 'e ynteraktive modus fan it kommando "git add -i", opnij skreaun fan Perl nei C, ynskeakele.

Boarne: opennet.ru

Add a comment