Liberasyon sistèm kontwòl sous distribiye Git 2.26

Disponib lage yon sistèm kontwòl sous distribiye git 2.26.0. Git se youn nan sistèm kontwòl vèsyon ki pi popilè, serye ak pèfòmans segondè, ki bay zouti devlopman fleksib ki pa lineyè ki baze sou branch ak fizyon. Pou asire entegrite istwa a ak rezistans nan chanjman retwoaktif, yo itilize hashing implicite nan tout istwa anvan an nan chak komèt; li posib tou pou sètifye tag endividyèl ak komèt ak siyati dijital devlopè yo.

Konpare ak lage anvan an, nouvo vèsyon an enkli 504 chanjman, ki te prepare avèk patisipasyon 64 devlopè, nan yo ki 12 te patisipe nan devlopman pou premye fwa. Prensipal la inovasyon:

  • Defo a te chanje a dezyèm vèsyon Pwotokòl kominikasyon Git, ki itilize lè yon kliyan konekte ak yon sèvè Git. Dezyèm vèsyon pwotokòl la se remakab pou bay kapasite pou filtre branch ak tags sou bò sèvè a, retounen yon lis ki pi kout nan lyen ki mennen nan kliyan an. Anvan sa, nenpòt kòmand rale ta toujou voye kliyan an lis konplè referans nan depo a tout antye, menm lè kliyan an te sèlman mete ajou yon branch oswa tcheke ke kopi yo nan depo a te ajou. Yon lòt inovasyon remakab se kapasite pou ajoute nouvo kapasite nan pwotokòl la kòm nouvo fonksyonalite vin disponib nan bwat zouti a. Kòd kliyan an rete konpatib ak ansyen pwotokòl la epi li ka kontinye travay ak nouvo ak ansyen serveurs, otomatikman retounen nan premye vèsyon an si sèvè a pa sipòte dezyèm lan.
  • Opsyon "-show-scope" te ajoute nan lòd "git config" la, sa ki fè li pi fasil pou idantifye plas kote sèten paramèt yo defini. Git pèmèt ou defini anviwònman yo nan diferan kote: nan depo a (.git/info/config), nan anyè itilizatè a (~/.gitconfig), nan dosye konfigirasyon nan tout sistèm nan (/etc/gitconfig), ak nan lòd. opsyon liy ak varyab anviwònman an. Lè w ap egzekite "git config" li trè difisil pou konprann ki kote egzakteman anviwònman an vle defini. Pou rezoud pwoblèm sa a, opsyon "--show-origin" la te disponib, men li sèlman montre chemen an nan dosye a nan ki anviwònman an defini, ki itil si ou gen entansyon modifye dosye a, men li pa ede si ou. bezwen chanje valè a atravè "git config" lè l sèvi avèk opsyon "--system", "--global" oswa "-local". Nouvo opsyon "--show-scope" montre kontèks definisyon varyab la epi yo ka itilize ansanm ak -show-origin:

    $ git --list --show-scope --montre-orijin
    fichye global:/home/user/.gitconfig diff.interhunkcontext=1
    global file:/home/user/.gitconfig push.default=aktyèl
    […] local file:.git/config branch.master.remote=origin
    dosye lokal:.git/config branch.master.merge=refs/heads/master

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

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

  • Nan anviwònman obligatwa yo kalifikasyon yo Itilizasyon mask nan URL yo pèmèt. Nenpòt paramèt HTTP ak kalifikasyon nan Git ka mete tou de pou tout koneksyon (http.extraHeader, credential.helper) ak pou koneksyon ki baze sou URL (credential.https://example.com.helper, credential.https: //example. com.helper). Jiska kounye a, joker tankou *.example.com te pèmèt sèlman pou anviwònman HTTP, men yo pa te sipòte pou obligatwa kalifikasyon. Nan Git 2.26, diferans sa yo elimine epi, pou egzanp, mare yon non itilizatè a tout subdomains ou kapab kounye a presize:

    [Kredansyèl "https://*.example.com"]

    non itilizatè = ttaylorr

  • Ekspansyon sipò eksperimantal pou klonaj pasyèl (klonaj pasyèl) ap kontinye, sa ki pèmèt ou transfere sèlman yon pati nan done yo epi travay ak yon kopi enkonplè nan depo a. Nouvo lage a ajoute yon nouvo lòd "git sparse-checkout add", ki pèmèt ou ajoute repèrtwar endividyèl pou aplike operasyon "checkout" nan sèlman yon pati nan pye bwa k ap travay la, olye pou yo bay lis tout anyè sa yo alafwa atravè kòmandman "git". sparse-checkout set" (ou ka ajoute youn pa youn anyè, san yo pa re-espesifye tout lis la chak fwa).
    Pou egzanp, pou klonaj yon depo git/git san yo pa komèt tach, limite kesye a sèlman anyè rasin kopi k ap travay la, epi separeman make kesye pou anyè "t" ak "Dokimantasyon", ou ta ka presize:

    $ git clone --filter=blob:none --sparse [imèl pwoteje]:git/git.git

    $ cd git
    $ git sparse-checkout init --kòn

    $ git sparse-checkout ajoute t
    ....
    $ git sparse-checkout ajoute Dokimantasyon
    ....
    $ git sparse-checkout list
    dokimantasyon
    t

  • Pèfòmans "git grep" kòmandman an, ki itilize pou chèche tou de kontni aktyèl la nan repozitwa a ak revizyon istorik, te amelyore anpil. Pou akselere rechèch la, li te posib pou eskane sa ki nan pye bwa k ap travay la lè l sèvi avèk plizyè fil ("git grep -threads"), men rechèch la nan revizyon istorik te yon sèl-threaded. Koulye a, limitasyon sa a te retire pa mete ann aplikasyon kapasite nan paralelize operasyon lekti nan depo objè a. Pa default, kantite fil yo mete egal a kantite nwayo CPU, ki nan pifò ka kounye a pa mande pou mete klèman opsyon "-fil".
  • Te ajoute sipò pou ranpli otomatik nan opinyon sou kòmandman, chemen, lyen ak lòt agiman nan "git worktree" kòmandman an, ki pèmèt ou travay ak plizyè kopi k ap travay nan repozitwa a.
  • Te ajoute sipò pou koulè klere ki gen sekans chape ANSI. Pou egzanp, nan anviwònman yo pou koulè rekò "git config -color" oswa "git diff -color-moved" ou ka presize "%C (brightblue)" atravè opsyon "--format" pou ble klere.
  • Te ajoute nouvo vèsyon script fsmonitor-watchman, bay entegrasyon ak mekanis lan Facebook Watchman akselere swiv chanjman dosye yo ak aparans nan nouvo dosye. Apre mete ajou git obligatwa ranplase zen nan depo a.
  • Te ajoute optimize pou pi vit klon pasyèl lè w ap itilize bitmap
    (machin bitmap) pou evite yon rechèch konplè sou tout objè lè w ap filtre pwodiksyon an. Tcheke pou blobs (—filter=blob:none ak —filter=blob:limit=n) pandan klonaj pasyèl kounye a fèt
    siyifikativman pi vit. GitHub te anonse plak ak optimize sa yo ak sipò eksperimantal pou klonaj pasyèl.

  • Kòmandman "git rebase" la te deplase nan yon backend diferan, lè l sèvi avèk mekanis default 'fusion' (te deja itilize pou "rebase -i") olye pou yo 'patch + aplike'. Backends yo diferan nan kèk ti fason, pou egzanp, apre yo fin kontinye yon operasyon apre rezoud yon konfli (git rebase --continue), nouvo backend la ofri modifye mesaj la komèt, pandan y ap ansyen an tou senpleman itilize ansyen mesaj la. Pou retounen nan ansyen konpòtman an, ou ka itilize opsyon "--apply" oswa mete varyab konfigirasyon 'rebase.backend' nan 'aplike'.
  • Yon egzanp yon moun k ap okipe paramèt otantifikasyon espesifye atravè .netrc te redwi a yon fòm apwopriye pou itilize soti nan bwat la.
  • Te ajoute paramèt gpg.minTrustLevel pou mete nivo konfyans minimòm pou divès eleman ki fè verifikasyon siyati dijital.
  • Te ajoute opsyon "--pathspec-from-file" nan "git rm" ak "git stash".
  • Amelyorasyon swit tès yo te kontinye nan preparasyon pou tranzisyon an nan algorithm hashing SHA-2 olye pou yo SHA-1.

Sous: opennet.ru

Add nouvo kòmantè