Paglabas ng distributed source control system na Git 2.26

Magagamit paglabas ng isang distributed source control system git 2.26.0. Ang Git ay isa sa pinakasikat, maaasahan at may mataas na pagganap na mga sistema ng kontrol ng bersyon, na nagbibigay ng nababaluktot na non-linear na mga tool sa pagpapaunlad batay sa pagsasanga at pagsasama. Upang matiyak ang integridad ng kasaysayan at paglaban sa mga retroactive na pagbabago, ang implicit na pag-hash ng buong nakaraang kasaysayan ay ginagamit sa bawat commit; posible ring patunayan ang mga indibidwal na tag at commit gamit ang mga digital na lagda ng mga developer.

Kung ikukumpara sa nakaraang paglabas, ang bagong bersyon ay may kasamang 504 na pagbabago, na inihanda kasama ang pakikilahok ng 64 na mga developer, kung saan 12 ang nakibahagi sa pag-unlad sa unang pagkakataon. Ang pangunahing mga inobasyon:

  • Ang default ay inilipat sa pangalawang bersyon Git communication protocol, na ginagamit kapag ang isang kliyente ay malayuang kumokonekta sa isang Git server. Ang pangalawang bersyon ng protocol ay kapansin-pansin sa pagbibigay ng kakayahang mag-filter ng mga sangay at tag sa gilid ng server, na nagbabalik ng pinaikling listahan ng mga link sa kliyente. Dati, anumang pull command ay palaging magpapadala sa kliyente ng buong listahan ng mga sanggunian sa buong repository, kahit na ang kliyente ay nag-a-update lamang ng isang branch o tinitingnan kung ang kanilang kopya ng repositoryo ay napapanahon. Ang isa pang kapansin-pansing pagbabago ay ang kakayahang magdagdag ng mga bagong kakayahan sa protocol habang nagiging available ang bagong functionality sa toolkit. Ang client code ay nananatiling tugma sa lumang protocol at maaaring magpatuloy na gumana sa bago at lumang mga server, awtomatikong bumabalik sa unang bersyon kung hindi sinusuportahan ng server ang pangalawa.
  • Ang opsyong "-show-scope" ay idinagdag sa command na "git config", na ginagawang mas madaling matukoy ang lugar kung saan tinukoy ang ilang partikular na setting. Binibigyang-daan ka ng Git na tukuyin ang mga setting sa iba't ibang lugar: sa repositoryo (.git/info/config), sa direktoryo ng user (~/.gitconfig), sa file ng configuration sa buong system (/etc/gitconfig), at sa pamamagitan ng command mga pagpipilian sa linya at mga variable ng kapaligiran. Kapag nagsasagawa ng "git config" medyo mahirap maunawaan kung saan eksaktong tinukoy ang nais na setting. Upang malutas ang problemang ito, ang opsyon na "--show-origin" ay magagamit, ngunit ipinapakita lamang nito ang landas sa file kung saan tinukoy ang setting, na kapaki-pakinabang kung balak mong i-edit ang file, ngunit hindi makakatulong kung ikaw kailangang baguhin ang halaga sa pamamagitan ng “git config” gamit ang mga opsyon na "--system", "--global" o "-local". Ang bagong opsyon na "--show-scope" ay nagpapakita ng variable na konteksto ng kahulugan at maaaring gamitin kasabay ng -show-origin:

    $ git --list --show-scope --show-origin
    global file:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=current
    […] lokal na file:.git/config branch.master.remote=origin
    lokal na file:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    global diff.statgraphwidth 35
    lokal diff.colormoved plain

    $ git config --global --unset diff.statgraphwidth

  • Sa mga nagbubuklod na setting mga kredensyal Ang paggamit ng mga maskara sa mga URL ay pinapayagan. Ang anumang mga setting at kredensyal ng HTTP sa Git ay maaaring itakda pareho para sa lahat ng koneksyon (http.extraHeader, credential.helper) at para sa mga koneksyong nakabatay sa URL (credential.https://example.com.helper, credential.https: //example. com.katulong). Hanggang ngayon, ang mga wildcard gaya ng *.example.com ay pinapayagan lamang para sa mga setting ng HTTP, ngunit hindi sinusuportahan para sa pag-uugnay ng kredensyal. Sa Git 2.26, ang mga pagkakaibang ito ay inalis at, halimbawa, upang itali ang isang username sa lahat ng mga subdomain na maaari mo na ngayong tukuyin:

    [credential "https://*.example.com"]

    username = ttaylorr

  • Ang pagpapalawak ng pang-eksperimentong suporta para sa bahagyang pag-clone (mga partial na clone) ay nagpapatuloy, na nagbibigay-daan sa iyong ilipat lamang ang bahagi ng data at magtrabaho kasama ang hindi kumpletong kopya ng repositoryo. Ang bagong release ay nagdaragdag ng isang bagong command na "git sparse-checkout add", na nagpapahintulot sa iyo na magdagdag ng mga indibidwal na direktoryo upang ilapat ang "checkout" na operasyon sa bahagi lamang ng working tree, sa halip na ilista ang lahat ng naturang mga direktoryo nang sabay-sabay sa pamamagitan ng command na "git sparse-checkout set" (maaari kang magdagdag ng isa-isang direktoryo, nang hindi muling tinutukoy ang buong listahan sa bawat oras).
    Halimbawa, upang mai-clone ang isang git/git repository nang hindi gumagawa ng mga blobs, nililimitahan ang pag-checkout sa root directory lamang ng gumaganang kopya, at hiwalay na pagmamarka ng checkout para sa mga "t" at "Documentation" na mga direktoryo, maaari mong tukuyin:

    $ git clone --filter=blob:none --sparse [protektado ng email]:git/git.git

    $ cd git
    $ git sparse-checkout init --cone

    $ git sparse-checkout add t
    ....
    $ git sparse-checkout add Documentation
    ....
    $ git sparse-checkout list
    dokumentasyon
    t

  • Ang pagganap ng "git grep" na utos, na ginamit upang hanapin ang mga kasalukuyang nilalaman ng repositoryo at makasaysayang mga pagbabago, ay lubos na napabuti. Upang mapabilis ang paghahanap, posibleng i-scan ang mga nilalaman ng working tree gamit ang maramihang mga thread (“git grep –threads”), ngunit ang paghahanap sa mga makasaysayang pagbabago ay single-threaded. Ngayon ang limitasyong ito ay inalis sa pamamagitan ng pagpapatupad ng kakayahang parallelize ang mga operasyon sa pagbabasa mula sa imbakan ng bagay. Bilang default, itinakda ang bilang ng mga thread na katumbas ng bilang ng mga core ng CPU, na sa karamihan ng mga kaso ngayon ay hindi nangangailangan ng tahasang pagtatakda ng opsyong "-threads".
  • Nagdagdag ng suporta para sa autocompletion ng input ng mga subcommand, path, link at iba pang argumento ng command na "git worktree", na nagpapahintulot sa iyo na magtrabaho kasama ang ilang gumaganang kopya ng repository.
  • Idinagdag ang suporta para sa mga maliliwanag na kulay na mayroong ANSI escape sequence. Halimbawa, sa mga setting para sa mga highlight na kulay “git config –color” o “git diff –color-moved” maaari mong tukuyin ang “%C(brightblue)” sa pamamagitan ng opsyong “--format” para sa maliwanag na asul.
  • Nagdagdag ng bagong bersyon ng script fsmonitor-bantay, na nagbibigay ng integrasyon sa mekanismo Tagabantay sa Facebook upang mapabilis ang pagsubaybay sa mga pagbabago sa file at ang hitsura ng mga bagong file. Pagkatapos i-update ang git ay kinakailangan palitan hook sa imbakan.
  • Nagdagdag ng mga pag-optimize upang mapabilis ang mga bahagyang clone kapag gumagamit ng mga bitmap
    (bitmap machinery) upang maiwasan ang kumpletong paghahanap ng lahat ng mga bagay kapag sinasala ang output. Ang pagsuri para sa mga blobs (—filter=blob:none at —filter=blob:limit=n) sa panahon ng partial cloning ay ginagawa na ngayon
    makabuluhang mas mabilis. Ang GitHub ay nag-anunsyo ng mga patch na may mga pag-optimize na ito at pang-eksperimentong suporta para sa bahagyang pag-clone.

  • Ang command na "git rebase" ay inilipat sa ibang backend na gumagamit ng default na 'merge' na mekanismo (dating ginamit para sa "rebase -i") sa halip na 'patch+apply'. Ang mga backend ay naiiba sa ilang maliliit na paraan, halimbawa, pagkatapos ipagpatuloy ang isang operasyon pagkatapos malutas ang isang salungatan (git rebase --continue), ang bagong backend ay nag-aalok upang i-edit ang commit na mensahe, habang ang luma ay ginamit lang ang lumang mensahe. Upang bumalik sa dating gawi, maaari mong gamitin ang "--apply" na opsyon o itakda ang 'rebase.backend' configuration variable sa 'apply'.
  • Ang isang halimbawa ng isang handler para sa mga parameter ng pagpapatunay na tinukoy sa pamamagitan ng .netrc ay binawasan sa isang form na angkop para sa paggamit sa labas ng kahon.
  • Idinagdag ang setting ng gpg.minTrustLevel upang itakda ang minimum na antas ng tiwala para sa iba't ibang elemento na nagsasagawa ng digital signature na pag-verify.
  • Idinagdag ang "--pathspec-from-file" na opsyon sa "git rm" at "git stash".
  • Nagpatuloy ang pagpapabuti ng mga test suite bilang paghahanda para sa paglipat sa SHA-2 hashing algorithm sa halip na SHA-1.

Pinagmulan: opennet.ru

Magdagdag ng komento