Liberasyon sistèm kontwòl sous distribiye Git 2.22

Entwodwi lage yon sistèm kontwòl sous distribiye git 2.22.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 nan istwa ak rezistans nan chanjman retwoaktif, yo itilize hachaj implicite nan tout istwa anvan an nan chak komite, epi 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 745 chanjman, ki te prepare avèk patisipasyon 74 devlopè, nan yo ki 18 te patisipe nan devlopman pou premye fwa. Prensipal la inovasyon:

  • Disponib depi lage 1.18, nouvo mòd rebase komèt "git rebase --rebase-merges" ranplase ansyen opsyon "--preserve-merges", ki kounye a demode. Operasyon "git rebase" yo itilize pou ranplase yon seri de komèt ak yon nouvo komite baz, pou egzanp, pou deplase yon branch separe ki ap devlope kèk nouvo karakteristik nan eta aktyèl la nan branch mèt la, ki gen ladan yo fikse ajoute apre branch lan. :

    o - o - o (karakteristik mwen)

    /

    o - o - o - o - o (mèt)

    o - o - o (karakteristik mwen)

    /

    o - o - o - o - o (mèt)

    Pou prezève estrikti branch lan nan yon branch imigre, opsyon "--preserve-merges" te kapab deja itilize, ki, lè yo te kouri nan mòd entèaktif (git rebase -i --preserve-merges), te pèmèt koreksyon istwa komite a, men pa t 'garanti prezèvasyon konplè nan estrikti depo a. Nouvo mòd "--rebase-fusions" pèmèt ou prezève estrikti chanjman nan branch yo te imigre, pandan y ap bay yon seri konplè operasyon entèaktif, ki gen ladan efase, regroupement ak chanje non komèt.

    Pa egzanp, "--rebase-fusions" pèmèt re-chaje komèt soti nan yon branch separe nan yon branch mèt ki pi nouvo, pandan y ap kenbe estrikti nan branch nan branch imigre a, epi fè kèk chanjman nan nòt yo komèt sou vole.

  • Te ajoute sipò pou kreye yon nouvo branch ki baze sou rezilta detèmine baz fizyone de lòt branch (baz fizyone, lyezon ak yon zansèt komen) lè l sèvi avèk konstriksyon "git branch new A...B" ak "git checkout -b new" A...B", nan ki "A...B" enplike defini yon baz fizyon ant de komèt espesifye, menm jan ak ki jan "git checkout A...B" deplase TÈT la nan komite baz la ak "dif A. ..B" montre chanjman ki genyen ant komite "B" ak menm jan ak komite "A" "Ansèt.

    Pou egzanp, lè w ap travay sou yon branch separe mwen-karakteristik, yo ka itilize karakteristik sa a lè ou vle kòmanse soti nan yon branch diferan, pou egzanp, nan menm kote a nan branch mèt la ki soti nan branch mwen-karakteristik yo te tcheke deyò. Précédemment, sa te egzije manyèlman ekzamine jounal chanjman an, ki te enkonvenyan si ou te gen yon gwo istwa de chanjman, Lè sa a, kouri "git merge-base master my-feature" pou kalkile hash baz fizyon an ant mèt la ak branch mwen-karakteristik. epi kreye yon nouvo branch parapò ak zansèt komen " git branch my-other-feature hash." Nan Git 2.22, ou ka itilize sentaks "git branch my-other-feature A...B" pou kreye yon branch parapò ak baz fizyone de lòt branch;

  • Te ajoute opsyon "git branch --show-current" pou montre non branch yo jwenn pandan operasyon kesye a;
  • Te ajoute opsyon "git checkout —no-overlay - dir", ki pèmèt, lè w ap fè yon operasyon kesye, pote sa ki nan anyè dir la nan yon fòm ki konplètman koresponn ak eta a nan branch mèt la. Pou egzanp, si gen yon dosye nan kopi lokal la nan anyè a dir ki pa nan branch mèt la, Lè sa a, pa default lè w ap egzekite "git checkout master - dir" li pral kite, epi si "--no-overlay" la. ” se opsyon espesifye, li pral efase;
  • Kòmandman "git diff" la sèvi ak yon API inivèsèl pou analiz opsyon, ki fè li posib pou inifye manyen opsyon ak lòt sèvis piblik git. Pou egzanp, nan "git diff", kounye a tout opsyon gen antagonis yo ("--function-context" ak "--no-function-context");
  • Te ajoute kapasite pou filtre tags pwolonje tache ak komèt nan pwodiksyon "git log" ("trelè" - drapo enfòmasyon adisyonèl, tankou Siyen-off-by ak Ko-otè-pa). Li posib pou filtre etikèt pa kle ak valè, pou egzanp:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • Yon nouvo motè trase, Trace2, te ajoute, ki ofri yon fòma pwodiksyon pi fleksib ak estriktire. Trace2 pèmèt ou kolekte telemetry sou operasyon egzekite ak done pèfòmans pou analiz plis detay ak debogaj (se moun kap okipe a asiyen pa itilizatè a, pa gen okenn done yo voye deyò);
  • Rapò "git bisect" la te vin pi lizib, nan ki komèt pwoblèm yo kounye a pi klè make ak estatistik rezime sou chanjman pou chak dosye yo parèt (nan nivo kantite liy ki chanje);
  • Yo te retravay euristik pou detèmine non anyè pou elimine fo enstalasyon pou chanje non etikèt yo. Lè gen dout, anyè sa yo kounye a make kòm konfli;
  • Yon avètisman parèt lè ou eseye enstale yon tag sou yon lòt tag, sa ki anjeneral fè pa erè epi ki ka mennen nan mete tag la sou komite a mal (pa egzanp, yon konstriksyon tankou "git tag -f -m "mezaj mesaj" my-tag1 my-tag2″ pral lakòz yon tag yo te kreye sou ansyen tag la, tandiske pwomotè a te espere nouvo tag la dwe enstale sou komèt la te montre nan ansyen tag la);
  • Jenerasyon pèmèt pou depo bitmap (estrikti "bitmaps rechyab" ki baze sou disk), ki estoke done sou seri objè ki disponib pou chak komèt epi pèmèt ou byen vit detèmine prezans yon objè debaz. Estrikti sa a siyifikativman diminye tan an ekzekisyon nan operasyon rekipere done (git chache).

Sous: opennet.ru

Add nouvo kòmantè