Lëshimi i sistemit të kontrollit të burimit të shpërndarë Git 2.22

prezantuar lëshimi i sistemit të kontrollit të burimit të shpërndarë git 2.22.0. Git është një nga sistemet e kontrollit të versioneve më të njohura, më të besueshme dhe me performancë të lartë që ofron mjete zhvillimi fleksibël jo-lineare të bazuara në degëzimin dhe bashkimin e degëve. Për të siguruar integritetin e historisë dhe rezistencën ndaj ndryshimeve në prapavijë, përdoret hashimi i nënkuptuar i të gjithë historisë së mëparshme në çdo kryerje, është gjithashtu e mundur të verifikohen nënshkrimet dixhitale të zhvilluesve të etiketave dhe detyrimeve individuale.

Krahasuar me versionin e mëparshëm, 745 ndryshime u pranuan në versionin e ri, të përgatitur me pjesëmarrjen e 74 zhvilluesve, nga të cilët 18 morën pjesë në zhvillim për herë të parë. Kryesore risitë:

  • I disponueshëm që nga lëshimi 1.18, modaliteti i ri i migrimit të grupit të kryerjes "git rebase --rebase-merges" ka zëvendësuar opsionin e vjetër "--preserve-merges", i cili tani është i vjetëruar. Operacioni "git rebase" përdoret për të zëvendësuar një seri kryerjesh me një kryerje të re bazë, për shembull, për të zhvendosur një degë të vetme që zhvillon disa veçori të reja në gjendjen aktuale të degës kryesore, e cila përfshin rregullime të shtuara pas degës:

    o - o - o (veçoria ime)

    /

    o - o - o - o - o (mjeshtër)

    o - o - o (veçoria ime)

    /

    o - o - o - o - o (mjeshtër)

    Për të ruajtur strukturën e degës në degën e migruar, mund të përdorej më parë opsioni "--ruaj-bashkon", i cili, kur ekzekutohej në modalitetin interaktiv (git rebase -i --preserve-merges ), lejonte redaktimin e historisë së kryerjes, por nuk garantonte ruajtjen e plotë të strukturës së depove. Zëvendësimi i modalitetit "--rebase-merges" ju lejon të mbani strukturën e ndryshimeve në degën e migruar, duke ofruar një grup të plotë operacionesh ndërvepruese, duke përfshirë fshirjen, rigrupimin dhe riemërtimin e detyrimeve.

    Për shembull, "--rebase-merges" Kjo i lejon ri-shtytja kryen nga një degë e veçantë në një degë kryesore më të re duke mbajtur strukturën e degës në degën e migruar dhe bëni disa ndryshime në shënimet e kryerjes ndërsa shkoni.

  • Mbështetje e shtuar për krijimin e një dege të re bazuar në rezultatin e përcaktimit të bazës së bashkimit të dy degëve të tjera (baza e bashkimit, lidhja me një paraardhës të përbashkët) duke përdorur "git dega new A…B" dhe "git checkout -b new A…B ” konstruktet, në të cilat "A ...B" nënkupton përcaktimin e bazës së bashkimit midis dy kryerjeve të specifikuara, ngjashëm me mënyrën se si "git checkout A...B" e zhvendos HEAD në kryerjen bazë dhe "ndryshimi A...B" tregon ndryshimet midis komitetit "B" dhe atij të përbashkët me komitetin "A". » paraardhësi.

    Për shembull, kur punoni në një degë të veçantë my-feature, funksioni i propozuar mund të përdoret kur dëshironi të filloni nga një degë tjetër, për shembull, nga i njëjti vend në degën kryesore nga e cila u kontrollua dega e funksionit tim. Më parë, kjo kërkonte ekzaminimin manual të regjistrit të ndryshimeve, i cili ishte i papërshtatshëm kur kishte një histori të madhe ndryshimesh, më pas bërja e "git merge-base master my-feature" për të llogaritur hash-in e bazës së bashkimit midis degëve master dhe funksionit tim, dhe duke krijuar një degë të re në lidhje me paraardhësin e përbashkët "git dega my-tjetër-feature hash". Në Git 2.22, sintaksa "git branch my-other-feature A…B" mund të përdoret për të krijuar një degë në lidhje me bazën e bashkimit të dy degëve të tjera;

  • U shtua opsioni "git branch --show-current" për të shfaqur emrin e degës së marrë nga operacioni i arkës;
  • U shtua opsioni "git checkout --no-overlay -- dir", i cili lejon, gjatë kryerjes së operacionit të arkëtimit, të sjellë përmbajtjen e drejtorisë dir në një formë që korrespondon plotësisht me gjendjen e degës kryesore. Për shembull, nëse ka një skedar në kopjen lokale të drejtorisë dir që nuk është në degën kryesore, atëherë si parazgjedhje kur ekzekutoni "git checkout master - dir" ai do të lihet dhe kur "--no-overlay " Opsioni është specifikuar, ai do të fshihet;
  • Komanda "git diff" përdor një API të analizës së opsioneve të përgjithshme për të unifikuar përpunimin e opsioneve me shërbimet e tjera git. Për shembull, në "git diff" të gjitha opsionet tani kanë antagonistët e tyre në dispozicion ("--function-context" dhe "--no-function-context");
  • U shtua aftësia për të filtruar kur nxirren etiketat e zgjeruara të "git log" të bashkangjitura në commits ("rimorkio" - flamuj shtesë informacioni, si "Signed-off-by" dhe "Co-authored-by". Është e mundur të filtroni etiketat si nga çelësi ashtu edhe nga vlera, për shembull:
    "git log --pretty="%(trailers:key=Shqyrtuar-nga,valueonly)";

  • Një motor i ri gjurmues, Trace2, është shtuar, duke ofruar një format daljeje më fleksibël dhe të strukturuar. Trace2 ju lejon të grumbulloni telemetrinë rreth operacioneve të kryera dhe të dhënave të performancës për analiza dhe korrigjime më të detajuara (trajtimi caktohet nga përdoruesi, asnjë të dhënë nuk dërgohet jashtë);
  • E bëri më të lexueshëm raportin "git bisect", i cili tani thekson më qartë kryerjet problematike dhe shfaq statistika përmbledhëse të ndryshimeve për çdo skedar (në nivelin e numrit të rreshtave të ndryshuar);
  • Heuristika për zbulimin e riemërtimeve të drejtorive është ridizajnuar për të shmangur vendosjen e gabuar të flamujve të riemërtimit. Kur dyshoni, drejtori të tilla tani shënohen si konfliktuale;
  • Një paralajmërim jepet kur përpiqeni të vendosni një etiketë në një etiketë tjetër, e cila, si rregull, bëhet gabimisht dhe mund të çojë në vendosjen e etiketës në kryerjen e gabuar (për shembull, një konstrukt si "git tag -f -m " mesazhi i përditësuar "my-tag1 my-tag2" do të rezultojë në krijimin e një etikete në etiketën e vjetër, ndërkohë që zhvilluesi priste që etiketa e re të vendosej në përcaktimin e treguar nga etiketa e vjetër);
  • Gjenerimi është i aktivizuar për depot e bitmap-eve (struktura e diskut "bitmaps e arritshmërisë") që ruajnë të dhëna për grupet e objekteve të disponueshme për çdo kryerje dhe ju lejojnë të përcaktoni shpejt praninë e objektit themelor. Struktura e specifikuar redukton ndjeshëm kohën e ekzekutimit të operacioneve të nxjerrjes së të dhënave (git fetch).

Burimi: opennet.ru

Shto një koment