Git 2.41 source control system anaa

Pagkahuman sa tulo ka bulan nga pag-uswag, ang pagpagawas sa giapod-apod nga sistema sa pagkontrol sa gigikanan nga Git 2.41 gipatik. Ang Git usa sa pinakasikat, kasaligan, ug high-performance nga version control system nga naghatag ug flexible non-linear development tools base sa branching ug merging branches. Aron masiguro ang integridad sa kasaysayan ug pagsukol sa retroactive nga mga pagbag-o, gigamit ang implicit nga pag-hash sa tibuok miaging kasaysayan sa matag commit, posible usab nga pamatud-an ang indibidwal nga mga tag ug commit nga adunay digital nga mga pirma gikan sa mga developers.

Kung itandi sa miaging pagpagawas, 542 nga mga pagbag-o ang gidawat sa bag-ong bersyon, nga giandam uban ang pag-apil sa 95 nga mga developer, diin 29 ang miapil sa pag-uswag sa unang higayon. Panguna nga mga inobasyon:

  • Gipauswag nga pagdumala sa dili maabot nga mga butang nga wala gi-refer sa repository (mga sanga o mga tag wala gi-refer). Ang dili maabot nga mga butang gikuha sa tigkolekta sa basura, apan magpabilin sa repository sa usa ka piho nga oras sa dili pa makuha aron malikayan ang mga kondisyon sa lumba. Aron masubay ang panahon sa dili maabot nga mga butang, gikinahanglan nga ihigot ang mga label ngadto kanila sa panahon sa pagbag-o sa susamang mga butang, nga wala magtugot sa pagtipig niini sa usa ka pack-file, diin ang tanan nga mga butang adunay komon nga oras sa pagbag-o. Kaniadto, ang matag dili maabot nga butang gitipigan sa usa ka bulag nga file, nga misangpot sa mga problema kung adunay daghang bag-ong dili maabot nga mga butang nga wala pa mapapas. Sa bag-ong pagpagawas, sa default, ang mekanismo sa "cruft packs" gigamit sa pag-pack sa dili maabot nga mga butang, nga nagtugot sa pagtipig sa tanan nga dili maabot nga mga butang sa usa ka pack file, ug nagpakita sa datos sa oras sa pagbag-o sa matag butang sa usa ka lahi nga lamesa nga gitipigan sa usa ka file nga adunay extension nga ".mtimes" ug gisumpay gamit ang index file nga adunay extension nga ".idx".
    Git 2.41 source control system anaa
  • Sa kasagaran, ang pagmintinar sa reverse index (revindex) sa disk para sa mga pack files gi-enable. Kung gisulayan sa mga torvalds/linux repository, ang paggamit sa usa ka reverse index nagtugot kanamo sa pagpadali sa mga operasyon nga "git push" nga kusog sa kapanguhaan sa 1.49 ka beses, ug yano nga mga operasyon, sama sa pagkalkula sa gidak-on sa usa ka butang gamit ang "git cat- file --batch='%(objectsize:disk)' Β»77 ka beses. Ang mga file (".rev") nga adunay reverse index itago sulod sa repository sa ".git/objects/pack" nga direktoryo.

    Hinumdomi nga gitipigan sa Git ang tanan nga datos sa porma sa mga butang, nga gibutang sa lainlaing mga file. Aron madugangan ang kaepektibo sa pagtrabaho kauban ang repository, ang mga butang dugang nga gibutang sa mga file sa pack, diin ang kasayuran gipresentar sa porma sa usa ka sapa sa mga butang nga nagsunod sa usag usa (usa ka parehas nga format ang gigamit kung gibalhin ang mga butang gamit ang git fetch ug git push commands). Usa ka index file (.idx) ang gihimo alang sa matag pack file, nga nagtugot kanimo nga dali nga mahibal-an ang offset sa pack file diin ang gihatag nga butang gitipigan sa object identifier.

    Ang reverse index nga gilakip sa bag-ong pagpagawas gitumong sa pagpahapsay sa proseso sa pagtino sa object ID gikan sa impormasyon mahitungod sa nahimutangan sa butang sa pack file. Kaniadto, ang ingon nga pagkakabig gihimo sa langaw sa panahon sa pag-parse sa pack file ug gitipigan lamang sa panumduman, nga wala magtugot sa paggamit pag-usab sa ingon nga mga indeks ug gipugos ang indeks nga mabuhat matag higayon. Ang operasyon sa pagtukod sa usa ka indeks gipakunhod ngadto sa pagtukod sa usa ka han-ay sa mga pares nga posisyon sa butang ug paghan-ay niini pinaagi sa posisyon, nga mahimong magdugay alang sa dagkong mga file sa pakete.

    Pananglitan, ang operasyon sa pagpakita sa mga sulod sa mga butang, nga naggamit sa usa ka direkta nga indeks, mao ang 62 nga mga panahon nga mas paspas kay sa operasyon sa pagpakita sa gidak-on sa mga butang, diin ang posisyon-sa-butang nga relasyon data wala gi-indeks. Pagkahuman sa paggamit sa reverse index, kini nga mga operasyon nagsugod sa hapit parehas nga oras. Gitugotan ka usab sa mga reverse index nga mapadali ang operasyon sa pagpadala sa mga butang kung ipatuman ang pagkuha ug pagduso nga mga mando pinaagi sa direkta nga pagbalhin sa andam nga datos gikan sa disk.

    Git 2.41 source control system anaa

  • Gidugang nga suporta alang sa pagpasa sa WWW-Authenticate nga mga ulohan tali sa tigdumala sa kredensyal ug sa serbisyo sa pag-authentication sa protocol nga "katabang sa kredensyal" nga gigamit sa pagpasa sa mga kredensyal kung nag-access sa mga gipugngan nga mga repositoryo. Ang suporta alang sa WWW-Authenticate header nagtugot kanimo sa pagpasa sa OAuth scope parameters ngadto sa mas granularly nga pagbulag sa access sa user ngadto sa mga repository ug limitahan ang mga scope nga magamit alang sa mga hangyo.
  • Gidugang nga opsyon sa format "%(sa unahan-luyo: )", nga nagtugot kanimo nga makakuha dayon og impormasyon bahin sa gidaghanon sa mga commit nga anaa o wala sa usa ka piho nga sanga, nga may kalabotan sa lain nga sanga (kung unsa ka daghan ang usa ka sanga nga naulahi o nag-una sa lain sa lebel sa mga nahimo). Kaniadto, ang pagkuha niini nga impormasyon nanginahanglan og duha ka managlahing mga sugo: "git rev-list --count main..my-feature" aron makuha ang gidaghanon sa mga commit nga talagsaon sa usa ka branch, ug "git rev-list --count my-feature.. main" aron makuha ang numero nga nawala nga mga commit. Karon ang ingon nga mga kalkulasyon mahimong mubu sa usa ka panudlo, nga nagpasimple sa mga tigdumala sa pagsulat ug gipamubu ang oras sa pagpatuman. Pananglitan, aron ipakita ang wala mahiusa nga mga sanga ug susihon kung naa ba sila sa luyo o unahan sa ilang panguna nga sanga, mahimo nimong gamiton ang usa ka linya: $ git for-each-ref --no-merged=origin/HEAD \ --format=' %(refname:mubo) %(una-luyo :origin/HEAD)' \ refs/heads/tb/ | column -t tb/cruft-extra-tips 2 96 tb/for-each-refβ€”dili iapil ang 16 96 tb/roaring-bitmaps 47 3 imbes sa gigamit na nga script, nga 17 ka beses nga mas hinay: $ git for-each-ref β€” format='%(refname:mubo)' --no-merged=origin/HEAD \ refs/heads/tb | samtang basaha ang ref do ahead="$(git rev-list --count origin/HEAD..$ref)" behind="$(git rev-list --count $ref..origin/HEAD)" printf "%s %d %d\n" "$ref" "$una" "$likod" nahuman | column -t tb/cruft-extra-tips 2 96 tb/for-each-refβ€”dili iapil ang 16 96 tb/nagngulob-bitmaps 47 3
  • Gidugang ang "--porselana" nga kapilian sa "git fetch" nga mando, nga nagpatunghag output sa format nga " ”, dili kaayo mabasa, apan mas kombenyente alang sa pag-parse sa mga script.
  • Gidugang ang setting nga "fetch.hideRefs" aron mapadali ang mga operasyon sa "git fetch" pinaagi sa pagtago sa bahin sa mga link sa lokal nga tipiganan sa yugto sa pag-verify nga gipadala sa server ang tibuuk nga set sa mga butang, nga makatipig oras pinaagi sa paglimit sa tseke sa mga server lamang. diin ang datos direktang makuha. Pananglitan, kung ang pagsulay sa usa ka sistema nga adunay mga repositoryo nga adunay daghang mga gisubay nga eksternal nga mga link, wala’y apil ang tanan nga mga link gawas sa mga gitumong sa $ hilit nga target server nakunhuran ang operasyon nga "git fetch" gikan sa 20 minuto hangtod sa 30 segundos. $ git -c fetch.hideRefs=refs -c fetch.hideRefs=!refs/remotes/$remote \ fetch $remote
  • Ang "git fsck" nga sugo nagpatuman sa abilidad sa pagsusi sa korapsyon, checksum matching, ug pagkahusto sa mga bili sa accessibility bitmaps ug reverse index.
  • Ang "git clone --local" nga sugo karon nagpakita sa usa ka sayup sa pagsulay sa pagkopya gikan sa usa ka repositoryo nga adunay simbolo nga mga link sulod sa $GIT_DIR.

Source: opennet.ru

Idugang sa usa ka comment