Git 2.41 frumstýringarkerfi í boði

Eftir þriggja mánaða þróun hefur útgáfa dreifða heimildastýringarkerfisins Git 2.41 verið birt. Git er eitt vinsælasta, áreiðanlegasta og afkastamesta útgáfustýringarkerfið sem býður upp á sveigjanleg ólínuleg þróunarverkfæri sem byggjast á greiningu og sameiningu útibúa. Til að tryggja heilleika sögunnar og mótstöðu gegn afturvirkum breytingum er óbein hashing af allri fyrri sögu í hverri skuldbindingu notuð, einnig er hægt að sannreyna einstök merki og skuldbindingar með stafrænum undirskriftum frá þróunaraðilum.

Í samanburði við fyrri útgáfu voru 542 breytingar samþykktar í nýju útgáfunni, unnar með þátttöku 95 forritara, þar af 29 sem tóku þátt í þróuninni í fyrsta skipti. Helstu nýjungar:

  • Bætt meðhöndlun á hlutum sem ekki er hægt að ná til sem ekki er vísað til í geymslunni (ekki vísað til útibúa eða merkja). Hlutir sem ekki er hægt að ná til eru fjarlægðir af sorphirðu, en eru í geymslunni í ákveðinn tíma áður en þeir eru fjarlægðir til að forðast keppnisaðstæður. Til að halda utan um tímabil óaðgengilegra hluta er nauðsynlegt að binda merkimiða við þá með breytingatíma svipaðra hluta, sem leyfir ekki að geyma þá í einni pakkaskrá, þar sem allir hlutir hafa sameiginlegan breytingatíma. Áður var hver óaðgengilegur hlutur geymdur í sérstakri skrá, sem leiddi til vandræða ef það var mikill fjöldi ferskra óaðgengilegra hluta sem ekki voru enn háðir eyðingu. Í nýju útgáfunni, sjálfgefið, er „cruft packs“ vélbúnaðurinn notaður til að pakka óaðgengilegum hlutum, sem gerir kleift að geyma alla óaðgengilega hluti í einni pakkaskrá og endurspegla gögnin um breytingartíma hvers hlutar í sérstakri töflu sem geymd er í skrá með „.mtimes“ endingunni og tengd með því að nota vísitöluskrá með „.idx“ endingunni.
    Git 2.41 frumstýringarkerfi í boði
  • Sjálfgefið er að viðhalda öfugri vísitölu (revindex) á diski fyrir pakkaskrár er virkt. Þegar það var prófað á torvalds/linux geymslunum, gerði notkun öfugs vísitölu okkur kleift að flýta auðlindafrekum „git push“ aðgerðum um 1.49 sinnum og einfaldar aðgerðir, eins og að reikna út stærð eins hlutar með „git cat- file --batch='%(objectsize:diskur)' » 77 sinnum. Skrár (".rev") með öfugri vísitölu verða geymdar inni í geymslunni í ".git/objects/pack" möppunni.

    Mundu að Git geymir öll gögn í formi hluta, sem eru settir í aðskildar skrár. Til að auka skilvirkni í að vinna með geymsluna eru hlutir að auki settir í pakkaskrár, þar sem upplýsingar eru settar fram í formi straums af hlutum sem fylgja hver á eftir öðrum (svipað snið er notað þegar hlutir eru fluttir með git fetch og git ýta skipanir). Vísitalaskrá (.idx) er búin til fyrir hverja pakkaskrá, sem gerir þér kleift að ákvarða á mjög fljótlegan hátt frávikið í pakkaskránni sem tiltekinn hlutur er geymdur með af hlutauðkenninu.

    Andstæða vísitalan sem er með í nýju útgáfunni miðar að því að hagræða ferlinu við að ákvarða auðkenni hlutar út frá upplýsingum um staðsetningu hlutarins í pakkaskránni. Áður var slík umbreyting framkvæmd á flugi við þáttun pakkaskrárinnar og var aðeins geymd í minni, sem leyfði ekki endurnotkun á slíkum vísitölum og neyddist til að búa til vísitöluna í hvert skipti. Aðgerðin við að byggja upp vísitölu er minnkað í að byggja upp fjölda af hlut-stöðupörum og flokka það eftir staðsetningu, sem getur tekið langan tíma fyrir stórar pakkaskrár.

    Til dæmis var aðgerðin við að birta innihald hluta, sem notar beina vísitölu, 62 sinnum hraðari en aðgerðin að sýna stærð hluta, þar sem gögn um stöðu-til-hlut tengsl voru ekki verðtryggð. Eftir að hafa notað öfuga vísitöluna fóru þessar aðgerðir að taka um það bil sama tíma. Andstæðar vísitölur leyfa þér einnig að flýta fyrir því að senda hluti þegar þú keyrir niður og ýttu skipanir með því að flytja tilbúin gögn beint af diski.

    Git 2.41 frumstýringarkerfi í boði

  • Bætti við stuðningi við að senda WWW-Authenticate hausa á milli persónuskilríkismeðferðaraðilans og auðkenningarþjónustunnar við „credential helper“ samskiptareglur sem notuð eru til að senda skilríki þegar aðgangur er að takmörkuðum geymslum. Stuðningur við WWW-Authenticate hausinn gerir kleift að senda OAuth umfangsfæribreytur til nákvæmari aðskilinn notendaaðgang að geymslum og afmarka umfangið sem er tiltækt fyrir beiðnir.
  • Bætt við sniðvalkosti "%(ahead-behind: )", sem gerir þér kleift að fá strax upplýsingar um fjölda skuldbindinga sem eru til staðar eða fjarverandi í ákveðnu útibúi, miðað við annað útibú (hversu mikið ein grein er á eftir eða á undan annarri á stigi skuldbindinga). Áður þurfti að fá þessar upplýsingar tvær aðskildar skipanir: "git rev-list --count main..my-feature" til að fá fjölda skuldbindinga sem eru einstök fyrir grein, og "git rev-list --count my-feature. main" til að fá töluna sem vantar commits. Nú er hægt að minnka slíka útreikninga í eina skipun, sem einfaldar rithöndlara og dregur úr framkvæmdartíma. Til dæmis, til að sýna ósameinuð útibú og meta hvort þær séu á eftir eða á undan aðalútibúum sínum, geturðu notað einnar línu: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind :origin/HEAD)' \ refs/heads/tb/ | dálkur -t tb/cruft-extra-tips 2 96 tb/for-each-ref—útiloka 16 96 tb/roaring-bitmaps 47 3 í staðinn fyrir áður notaða skriftu, sem er 17 sinnum hægari: $ git for-each-ref - format='%(refname:short)' --no-merged=uppruni/HEAD \ refs/heads/tb | meðan þú lest ref, gerðu ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$behind" lokið | dálkur -t tb/cruft-extra-tips 2 96 tb/fyrir-hver-tilvísun—útiloka 16 96 tb/roaring-bitmaps 47 3
  • Bætti við "--postulíni" valmöguleikanum við "git fetch" skipunina, sem býr til úttak á sniðinu " ”, minna læsilegt, en þægilegra fyrir þáttun í skriftum.
  • Bætt við "fetch.hideRefs" stillingu til að flýta fyrir "git fetch" aðgerðum með því að fela hluta af tenglum í staðbundinni geymslu á því stigi að athuga hvort þjónninn sendi allt sett af hlutum, sem sparar tíma með því að takmarka ávísunina við aðeins netþjóna sem gögn eru sótt beint úr. Til dæmis, þegar prófað er á kerfi með geymslum sem innihalda mikinn fjölda rakta ytri tengla, að útiloka alla tengla nema þá sem beint er að $fjarlæga miðlaranum minnkaði „git fetch“ aðgerðina úr 20 mínútum í 30 sekúndur. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ sækja $remote
  • „git fsck“ skipunin útfærir getu til að athuga með spillingu, athugunarsummusamsvörun og réttmæti gilda í aðgengisbitamyndum og öfugum vísitölum.
  • „git clone --local“ skipunin sýnir nú villu þegar reynt er að afrita úr geymslu sem inniheldur táknræna tengla inni í $GIT_DIR.

Heimild: opennet.ru

Bæta við athugasemd