Sistema ta 'kontroll tas-sors Git 2.41 disponibbli

Wara tliet xhur ta 'żvilupp, ir-rilaxx tas-sistema ta' kontroll tas-sors distribwit Git 2.41 ġie ppubblikat. 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 ta' fergħat u ta 'għaqda. Biex tiġi żgurata l-integrità tal-istorja u r-reżistenza għal bidliet retroattivi, jintuża hashing impliċitu tal-istorja kollha preċedenti f'kull impenn, huwa wkoll possibbli li jiġu vverifikati tikketti individwali u impenji b'firem diġitali mill-iżviluppaturi.

Meta mqabbel mar-rilaxx preċedenti, ġew aċċettati 542 tibdil fil-verżjoni l-ġdida, ippreparata bil-parteċipazzjoni ta 'żviluppatur 95, li minnhom 29 ħadu sehem fl-iżvilupp għall-ewwel darba. Innovazzjonijiet ewlenin:

  • Immaniġġjar imtejjeb ta' oġġetti li ma jistgħux jintlaħqu li mhumiex referenzjati fir-repożitorju (fergħat jew tikketti mhumiex referenzjati). Oġġetti li ma jintlaħqux jistgħu jitneħħew mill-kollettur taż-żibel, iżda jibqgħu fir-repożitorju għal ċertu żmien qabel ma jitneħħew biex jiġu evitati l-kundizzjonijiet tat-tellieqa. Biex iżżomm kont tal-perjodu ta 'oġġetti li ma jintlaħqux, huwa meħtieġ li torbot it-tikketti magħhom mal-ħin tal-bidla ta' oġġetti simili, li ma jippermettix li jinħażnu f'pakkett-fajl wieħed, li fih l-oġġetti kollha għandhom ħin ta 'bidla komuni. Preċedentement, kull oġġett li ma jintlaħaqx kien maħżun f'fajl separat, li wassal għal problemi jekk kien hemm numru kbir ta 'oġġetti friski li ma jistgħux jintlaħqu li kienu għadhom ma kinux suġġetti għal tħassir. Fir-rilaxx il-ġdid, b'mod awtomatiku, il-mekkaniżmu "cruft packs" jintuża biex jippakkja oġġetti li ma jistgħux jintlaħqu, li jippermetti l-ħażna tal-oġġetti kollha li ma jistgħux jintlaħqu f'pakkett wieħed, u jirrifletti d-dejta dwar il-ħin tal-modifika ta 'kull oġġett f'tabella separata maħżuna f' fajl bl-estensjoni “.mtimes” u marbut bl-użu ta’ fajl indiċi bl-estensjoni “.idx”.
    Sistema ta 'kontroll tas-sors Git 2.41 disponibbli
  • B'mod awtomatiku, iż-żamma ta' indiċi invers (revindex) fuq disk għall-fajls tal-pakkett hija attivata. Meta ttestjat fuq ir-repożitorji torvalds/linux, l-użu ta' indiċi invers ippermettilna nħaffu l-operazzjonijiet ta' "git push" b'ħafna riżorsi b'1.49 darbiet, u operazzjonijiet sempliċi, bħall-kalkolu tad-daqs ta 'oġġett wieħed bl-użu ta' "git cat- fajl --batch='%(objectsize:disk)' » 77 darba. Fajls ("".rev") b'indiċi invers se jinħażnu ġewwa r-repożitorju fid-direttorju ".git/objects/pack".

    Ifakkar li Git jaħżen id-dejta kollha fil-forma ta 'oġġetti, li jitqiegħdu f'fajls separati. Biex tiżdied l-effiċjenza tax-xogħol mar-repożitorju, l-oġġetti jitqiegħdu addizzjonalment f'fajls tal-pakkett, li fihom l-informazzjoni hija ppreżentata fil-forma ta 'fluss ta' oġġetti wara xulxin (format simili jintuża meta jiġu trasferiti oġġetti bil-git fetch u git kmandi push). Jinħoloq fajl indiċi (.idx) għal kull fajl tal-pakkett, li jippermettilek tiddetermina malajr ħafna l-offset fil-fajl tal-pakkett li bih l-oġġett partikolari jinħażen mill-identifikatur tal-oġġett.

    L-indiċi invers inkluż fir-rilaxx il-ġdid huwa mmirat biex jissimplifika l-proċess tad-determinazzjoni tal-ID tal-oġġett minn informazzjoni dwar il-post tal-oġġett fil-fajl tal-pakkett. Preċedentement, tali konverżjoni kienet titwettaq fuq il-fly waqt l-analiżi tal-fajl tal-pakkett u kienet maħżuna biss fil-memorja, li ma tippermettix l-użu mill-ġdid ta 'dawn l-indiċi u ġiegħlet li l-indiċi jiġi ġġenerat kull darba. L-operazzjoni tal-bini ta 'indiċi hija mnaqqsa għall-bini ta' firxa ta 'pari ta' pożizzjoni ta 'oġġett u issortjar skond il-pożizzjoni, li jista' jieħu żmien twil għal fajls ta 'pakketti kbar.

    Pereżempju, l-operazzjoni tal-wiri tal-kontenut tal-oġġetti, li tuża indiċi dirett, kienet 62 darba aktar mgħaġġla mill-operazzjoni tal-wiri tad-daqs tal-oġġetti, li għalihom id-dejta tar-relazzjoni bejn il-pożizzjoni u l-oġġett ma kinitx indiċjata. Wara li użaw l-indiċi invers, dawn l-operazzjonijiet bdew jieħdu bejn wieħed u ieħor l-istess ħin. L-indiċijiet reverse jippermettu wkoll li tħaffef l-operazzjoni li tibgħat oġġetti meta tesegwixxi l-kmandi tal-ġibda u l-imbottatura billi tittrasferixxi direttament data lesta mid-diska.

    Sistema ta 'kontroll tas-sors Git 2.41 disponibbli

  • Appoġġ miżjud għall-mogħdija ta 'headers WWW-Authenticate bejn l-immaniġġjar tal-kredenzjali u s-servizz ta' awtentikazzjoni għall-protokoll "helper tal-kredenzjali" użat biex jgħaddi kredenzjali meta jaċċessa repożitorji ristretti. L-appoġġ għall-header WWW-Authenticate jippermettilek li tgħaddi l-parametri tal-ambitu OAuth għal aċċess tal-utent separat b'mod aktar granulari għar-repożitorji u tiddelimita l-ambitu disponibbli għat-talbiet.
  • Għażla ta' format miżjuda "%(ahead-behind: )", li jippermettilek li tikseb immedjatament informazzjoni dwar in-numru ta 'commits preżenti jew assenti f'ċerta fergħa, relattiv għal fergħa oħra (kemm fergħa waħda tibqa' lura jew qabel oħra fil-livell ta 'commits). Preċedentement, biex tikseb din l-informazzjoni kienet teħtieġ żewġ kmandi separati: "git rev-list --count main..my-feature" biex tikseb in-numru ta 'commits uniku għal fergħa, u "git rev-list --count my-feature.. main" biex tikseb in-numru ta' kommessi nieqsa. Issa dawn il-kalkoli jistgħu jitnaqqsu għal istruzzjoni waħda, li tissimplifika l-handlers tal-kitba u tnaqqas il-ħin ta 'eżekuzzjoni. Pereżempju, biex turi fergħat mhux magħquda u tevalwa jekk humiex wara jew quddiem il-fergħa prinċipali tagħhom, tista' tuża linja waħda: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:short) %(ahead-behind :origin/HEAD)' \ refs/heads/tb/ | kolonna -t tb/cruft-extra-tips 2 96 tb/for-each-ref—eskludi 16 96 tb/roaring-bitmaps 47 3 minflok l-iskript użat qabel, li huwa 17-il darba aktar bil-mod: $ git for-each-ref - format='%(refname:short)' --no-merged=origin/HEAD \ refs/heads/tb | filwaqt li aqra ref do ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$ahead" "$wara" lest | kolonna -t tb/cruft-extra-tips 2 96 tb/għal-kull-ref—eskludi 16 96 tb/roaring-bitmaps 47 3
  • Miżjud "--porċellana" għażla għall-kmand "git fetch", li jiġġenera output fil-format " ”, inqas jinqara, iżda aktar konvenjenti għall-parsing fl-iskripts.
  • Miżjud issettjar "fetch.hideRefs" biex iħaffef l-operazzjonijiet "git fetch" billi jaħbi parti mill-links fir-repożitorju lokali fl-istadju tal-verifika li s-server bagħat is-sett sħiħ ta 'oġġetti, li jiffranka l-ħin billi jillimita l-kontroll biss għas-servers li minnha tinġabar id-dejta direttament. Pereżempju, meta ttestjat fuq sistema b'repożitorji li fihom numru kbir ta 'links esterni rintraċċati, esklużi l-links kollha ħlief dawk indirizzati lis-server ta' mira $remote naqqas l-operazzjoni "git fetch" minn 20 minuta għal 30 sekonda. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
  • Il-kmand "git fsck" jimplimenta l-abbiltà li jiċċekkja l-korruzzjoni, it-tqabbil tas-checksum, u l-korrettezza tal-valuri f'bitmaps ta 'aċċessibilità u indiċi inversa.
  • Il-kmand "git clone --local" issa juri żball meta tipprova tikkopja minn repożitorju li jkun fih links simboliċi ġewwa $GIT_DIR.

Sors: opennet.ru

Żid kumment