Git 2.26 тараагдсан эх үүсвэрийн хяналтын системийн хувилбар

Боломжтой тархсан эх үүсвэрийн хяналтын системийг гаргах Git 2.26.0. Git бол хамгийн алдартай, найдвартай, өндөр гүйцэтгэлтэй хувилбарын хяналтын системүүдийн нэг бөгөөд салбарлах, нэгтгэх дээр суурилсан уян хатан шугаман бус хөгжүүлэлтийн хэрэгслээр хангадаг. Түүхийн бүрэн бүтэн байдал, буцаан хүчинтэй өөрчлөлтийг эсэргүүцэхийн тулд амлалт бүрт өмнөх түүхийг бүхэлд нь далд хэшлэх аргыг ашигладаг бөгөөд хөгжүүлэгчдийн тоон гарын үсгээр хувь хүний ​​шошго, амлалтуудыг баталгаажуулах боломжтой.

Өмнөх хувилбартай харьцуулахад шинэ хувилбарт 504 өөрчлөлт орсон бөгөөд 64 хөгжүүлэгчийн оролцоотойгоор бэлтгэгдсэнээс 12 нь анх удаа хөгжүүлэлтэд оролцсон байна. Үндсэн инноваци:

  • Өгөгдмөл рүү шилжсэн хоёр дахь хувилбар Үйлчлүүлэгч Git серверт алсаас холбогдох үед ашиглагддаг Git холбооны протокол. Протоколын хоёр дахь хувилбар нь серверийн талбарт салбарууд болон шошгуудыг шүүж, үйлчлүүлэгч рүү холбоосын товчилсон жагсаалтыг буцааснаараа онцлог юм. Өмнө нь аливаа татах команд нь үйлчлүүлэгч зөвхөн нэг салбарыг шинэчилж байгаа эсвэл репозиторын хуулбарыг шинэчлэгдсэн эсэхийг шалгаж байсан ч гэсэн бүх репозитор дахь лавлагааны бүрэн жагсаалтыг үргэлж илгээдэг байсан. Өөр нэг онцлох шинэлэг зүйл бол хэрэглүүрт шинэ функцууд гарах үед протоколд шинэ боломжуудыг нэмэх чадвар юм. Үйлчлүүлэгчийн код нь хуучин протоколтой нийцэж байгаа бөгөөд шинэ болон хуучин серверүүдтэй үргэлжлүүлэн ажиллах боломжтой бөгөөд хэрэв сервер хоёр дахь хувилбарыг дэмждэггүй бол автоматаар эхний хувилбар руу буцдаг.
  • "git config" команд дээр "-show-scope" сонголтыг нэмсэн нь тодорхой тохиргоог тодорхойлсон газрыг тодорхойлоход хялбар болгосон. Git нь өөр өөр газар тохиргоог тодорхойлох боломжийг олгодог: хадгалах газар (.git/info/config), хэрэглэгчийн лавлах (~/.gitconfig), системийн хэмжээний тохиргооны файл (/etc/gitconfig) болон тушаалаар дамжуулан. шугамын сонголтууд болон орчны хувьсагчид. "git config"-ийг гүйцэтгэх үед хүссэн тохиргоог яг хаана тодорхойлсон болохыг ойлгоход хэцүү байдаг. Энэ асуудлыг шийдэхийн тулд "--show-origin" сонголтыг ашиглах боломжтой байсан, гэхдээ энэ нь зөвхөн тохиргоог тодорхойлсон файлын замыг харуулдаг бөгөөд энэ нь хэрэв та файлыг засварлах гэж байгаа бол хэрэг болно, гэхдээ хэрэв та засах гэж байгаа бол тус болохгүй. "--system", "--global" эсвэл "-local" сонголтуудыг ашиглан "git config"-ээр утгыг өөрчлөх шаардлагатай. "--show-scope" шинэ сонголт нь хувьсагчийн тодорхойлолтын контекстийг харуулдаг бөгөөд үүнийг -show-origin-тэй хамт ашиглаж болно:

    $ git --list --show-scope --show-origin
    глобал файл:/home/user/.gitconfig diff.interhunkcontext=1
    глобал файл:/home/user/.gitconfig push.default=одоогийн
    […] local file:.git/config branch.master.remote=origin
    локал файл:.git/config branch.master.merge=refs/heads/master

    $ git config --show-scope --get-regexp 'diff.*'
    глобал ялгаа.statgraphwidth 35
    орон нутгийн ялгаа.өнгөт хувирсан энгийн

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

  • Холбох тохиргоонд итгэмжлэл URL дээр маск ашиглахыг зөвшөөрдөг. Git дээрх аливаа HTTP тохиргоо болон итгэмжлэлийг бүх холболтууд (http.extraHeader, credential.helper) болон URL-д суурилсан холболтуудад (credential.https://example.com.helper, credential.https: //example. com.helper). Өнөөг хүртэл *.example.com зэрэг орлуулагч тэмдэгтүүдийг зөвхөн HTTP тохиргоонд ашиглахыг зөвшөөрдөг байсан ч итгэмжлэлийг холбоход дэмжигдээгүй. Git 2.26 дээр эдгээр ялгааг арилгасан бөгөөд жишээлбэл, хэрэглэгчийн нэрийг бүх дэд домайнуудтай холбохын тулд та одоо дараахийг зааж өгч болно:

    ["https://*.example.com" итгэмжлэл]

    хэрэглэгчийн нэр = ttaylorr

  • Хэсэгчилсэн клон (хэсэгчилсэн клон) туршилтын дэмжлэгийг өргөжүүлэх ажил үргэлжилж байгаа бөгөөд энэ нь мэдээллийн зөвхөн нэг хэсгийг шилжүүлэх, хадгалах сангийн бүрэн бус хуулбартай ажиллах боломжийг олгоно. Шинэ хувилбар нь "git sparse-checkout add" гэсэн шинэ командыг нэмсэн бөгөөд энэ нь "git" командын тусламжтайгаар бүх сангуудыг нэг дор жагсаахын оронд "төлбөр хийх" үйлдлийг ажлын модны зөвхөн нэг хэсэгт ашиглах боломжийг олгодог. сийрэг тооцооны багц" (та бүх жагсаалтыг дахин зааж өгөхгүйгээр нэг нэгээр нь лавлах боломжтой).
    Жишээ нь, git/git репозиторыг бөөгнөрөлгүйгээр хувилах, зөвхөн ажиллаж буй хуулбарын үндсэн лавлахаар тооцоо хийх, мөн "t" болон "Баримт бичиг" лавлахуудыг тусад нь тэмдэглэхгүйгээр та дараахийг зааж өгч болно:

    $ git clone --filter=blob:none --sparse [имэйлээр хамгаалагдсан]:git/git.git

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

    $ git сийрэг-checkout нэмэх т
    ....
    $ git sparse-checkout Add Documentation
    ....
    $ git сийрэг тооцооны жагсаалт
    Баримт бичиг
    t

  • Хадгалах газрын одоогийн контент болон түүхэн засваруудыг хайхад ашигладаг "git grep" командын гүйцэтгэл мэдэгдэхүйц сайжирсан. Хайлтыг хурдасгахын тулд ажлын модны агуулгыг олон thread ("git grep –threads") ашиглан сканнердах боломжтой байсан ч түүхэн хувилбаруудын хайлт нь нэг урсгалтай байсан. Одоо объектын сангаас унших үйлдлийг зэрэгцүүлэх боломжийг хэрэгжүүлснээр энэ хязгаарлалт арилсан. Анхдагч байдлаар, хэлхээний тоог CPU-ийн цөмийн тоотой тэнцүү болгодог бөгөөд энэ нь ихэнх тохиолдолд "-threads" сонголтыг тодорхой тохируулах шаардлагагүй юм.
  • Дэд командууд, замууд, холбоосууд болон "git worktree" командын бусад аргументуудыг автоматаар бөглөх дэмжлэг нэмэгдсэн бөгөөд энэ нь танд репозиторын хэд хэдэн ажлын хуулбартай ажиллах боломжийг олгодог.
  • ANSI зугтах дараалал бүхий тод өнгөт дэмжлэг нэмсэн. Жишээлбэл, "git config -color" эсвэл "git diff -color-moved" гэсэн тодотголтой өнгөний тохиргоонд тод цэнхэр өнгөөр ​​"--format" сонголтоор "%C(brightblue)"-г зааж өгч болно.
  • Скриптийн шинэ хувилбарыг нэмсэн фсмонитор-харуул, механизмтай нэгдмэл байдлыг хангах Facebook Watchman файлын өөрчлөлт болон шинэ файлуудын харагдах байдлыг хурдасгах. Шинэчлэгдсэний дараа git шаардлагатай солих агуулах дахь дэгээ.
  • Битмап ашиглах үед хэсэгчилсэн клоныг хурдасгах оновчлолуудыг нэмсэн
    (битмап машин) гаралтыг шүүх үед бүх объектыг бүрэн хайхаас зайлсхийхийн тулд. Хэсэгчилсэн клончлолын үед толбо байгаа эсэхийг шалгах (—filter=blob:none болон -filter=blob:limit=n) хийгдсэн.
    мэдэгдэхүйц хурдан. GitHub эдгээр оновчлол болон хэсэгчилсэн клончлолын туршилтын дэмжлэг бүхий засваруудыг зарлалаа.

  • "git rebase" командыг "патч+хэрэглэх"-ийн оронд өгөгдмөл "нэгдүүлэх" механизмыг (өмнө нь "rebase -i"-д ашигладаг байсан) ашиглан өөр арын хэсэгт шилжүүлсэн. Backends нь зарим нэг жижиг зүйлээр ялгаатай байдаг, жишээлбэл, зөрчилдөөнийг шийдвэрлэсний дараа (git rebase --continue) үйлдлийг үргэлжлүүлсний дараа шинэ арын хэсэг нь амлалтын мессежийг засварлахыг санал болгодог бол хуучин нь зүгээр л хуучин мессежийг ашигладаг. Хуучин төлөв рүү буцахын тулд та "--apply" сонголтыг ашиглах эсвэл 'rebase.backend' тохиргооны хувьсагчийг 'apply' болгож тохируулж болно.
  • .netrc-ээр дамжуулан тодорхойлсон баталгаажуулалтын параметрүүдийн зохицуулагчийн жишээг хайрцагнаас гадуур ашиглахад тохиромжтой хэлбэр болгон багасгасан.
  • Тоон гарын үсгийн баталгаажуулалтыг гүйцэтгэдэг төрөл бүрийн элементүүдийн итгэлцлийн доод түвшинг тогтоохын тулд gpg.minTrustLevel тохиргоог нэмсэн.
  • "git rm" болон "git stash"-д "--pathspec-from-file" сонголтыг нэмсэн.
  • SHA-2-ийн оронд SHA-1 хэшлэх алгоритм руу шилжих бэлтгэл ажлын хүрээнд туршилтын багцуудыг сайжруулах ажлыг үргэлжлүүлэв.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх