Git 2.22 banatutako iturri-kontrol sistemaren kaleratzea

Bidalita iturburu-kontrol sistema banatua askatzea Git 2.22.0. Git bertsioak kontrolatzeko sistema ezagunenetako, fidagarri eta errendimendu handikoenetako bat da, adarkatze eta bategitean oinarritutako garapen-tresna ez-lineal malguak eskaintzen ditu. Historiaren osotasuna eta aldaketa atzerakoiekiko erresistentzia bermatzeko, aurreko historia osoaren hashing inplizitua erabiltzen da konpromiso bakoitzean, eta garatzaileen sinadura digitalekin etiketa eta konpromiso indibidualak ere ziurta daitezke.

Aurreko bertsioarekin alderatuta, bertsio berriak 745 aldaketa izan zituen, 74 garatzaileren parte-hartzearekin prestatuak, eta horietatik 18k garapenean parte hartu zuten lehen aldiz. Nagusia berrikuntzak:

  • 1.18 bertsioaz geroztik eskuragarri, "git rebase --rebase-merges" konpromezu berritzeko modu berriak "--preserve-merges" aukera zaharra ordezkatzen du, orain zaharkituta dagoena. "Git rebase" eragiketa konpromezu sorta bat oinarrizko konpromezu berri batekin ordezkatzeko erabiltzen da, adibidez, ezaugarri berriren bat garatzen ari den adar bereizi bat adar nagusiaren uneko egoerara eramateko, adarren ondoren gehitutako konponketak barne. :

    o - o - o (nire ezaugarria)

    /

    o - o - o - o - o (maisua)

    o - o - o (nire ezaugarria)

    /

    o - o - o - o - o (maisua)

    Migratutako adar batean adar-egitura gordetzeko, aldez aurretik β€œ--preserve-merges” aukera erabil zitekeen, eta horrek, modu interaktiboan exekutatzen denean (git rebase -i --preserve-merges), konpromisoen historia editatzea ahalbidetzen zuen, baina ez zuen bermatzen biltegiaren egituraren erabateko kontserbazioa. "--rebase-fusions" modu berriak migratzen ari den adarreko aldaketen egitura gordetzeko aukera ematen du, eragiketa interaktibo ugari eskaintzen dituen bitartean, konpromezuak ezabatzea, birlokatzea eta izena aldatzea barne.

    Adibidez, "--rebase-fusions" aukera ematen du berriro kargatu konpromisoak aparteko adar batetik adar nagusi berriago batera, migratutako adarrean adar-egitura mantenduz, eta egin aldaketa batzuk konprometitu-oharretan.

  • Adar berri bat sortzeko euskarria gehitu da beste bi adarren (baketa-oinarria, arbaso komun bati lotzea) "git branch new A...B" eta "git checkout -b new" eraikuntzak erabiliz oinarritutako bateratze-oinarria zehaztearen emaitzan oinarrituta. A...B", zeinetan "A ...B" zehaztutako bi konpromisoen arteko bateratze-oinarri bat zehaztea dakar, "git checkout A...B"-k HEAD oinarrizko konpromisura eta "diff A. ..B"-k "B" konpromezuaren eta "A" konpromezuaren berdinaren arteko aldaketak erakusten ditu "Arbasoa.

    Esate baterako, nire ezaugarrien adar bereizi batean lan egiten duzunean, eginbide hau erabil daiteke beste adar batetik hasi nahi duzunean, adibidez, nire eginbidearen adarra egiaztatu den adar nagusiko toki beretik. Aurretik, aldaketaren erregistroa eskuz aztertu behar zen, eta hori deserosoa zen aldaketen historia handia bazenuen, eta gero "git merge-base master my-feature" exekutatu behar zen bateratze-oinarriaren hash-a kalkulatzeko, maisuaren eta nire ezaugarrien adarren artean. eta arbaso arruntarekiko adar berri bat sortzea " git branch my-other-feature hash ". Git 2.22-n, "git branch my-other-feature A...B" sintaxia erabil dezakezu beste bi adarren bateratze-oinarriarekiko adar bat sortzeko;

  • Gehitu da "git branch --show-current" aukera, ordainketa eragiketan lortutako adarraren izena bistaratzeko;
  • β€œGit checkout β€”no-overlay β€” dir” aukera gehitu da, eta horrek aukera ematen du, checkout eragiketa bat egiterakoan, adar nagusiaren egoerari guztiz bat datorren inprimaki batera dir direktorioko edukia ekartzea. Esate baterako, adar maisuan ez dagoen zuzeneko direktorioaren kopia lokalean fitxategi bat badago, lehenespenez "git checkout master - dir" exekutatzen denean, utzi egingo da, eta "--no-overlay" bada. ” aukera zehazten da, ezabatu egingo da;
  • "git diff" komandoak API unibertsal bat erabiltzen du aukerak analizatzeko, eta horri esker, aukerak kudeatzea beste git utilitate batzuekin bateratzea posible da. Esate baterako, β€œgit diff”-en, aukera guztiek dituzte orain bere antagonistak (β€œ--function-context” eta β€œ--no-function-context”);
  • Konpromisoei erantsitako etiketa hedatuak iragazteko gaitasuna gehitu da "git log" irteeran ("trailerra" - informazio gehigarriaren banderak, hala nola, Sinatuta eta Egilekidearekin batera). Etiketak gakoaren eta balioaren arabera iragaztea posible da, adibidez:
    "git log --pretty="%(trailers:key=Berrikusiak,valueonly)";

  • Trazadura-motor berri bat, Trace2, gehitu da, irteera-formatu malguagoa eta egituratuagoa eskainiz. Trace2-k exekutaturiko eragiketei eta errendimendu-datuei buruzko telemetria biltzeko aukera ematen du analisi eta arazketa zehatzagoetarako (kudeatzailea erabiltzaileak esleitzen du, ez da kanpotik bidaltzen daturik);
  • "Git bisect" txostena irakurgarriagoa egin da, eta bertan, gaur egun, konpromiso problematikoak argiago nabarmentzen dira eta fitxategi bakoitzeko aldaketen laburpen-estatistikak bistaratzen dira (aldatutako lerro kopuruaren mailan);
  • Direktorioen izenak aldatzeko etiketen instalazio faltsuak ezabatzeko, direktorioen izenak zehazteko heuristikoak berritu dira. Zalantzarik izanez gero, direktorio horiek gatazkatsu gisa markatzen dira;
  • Abisu bat bistaratzen da etiketa bat beste etiketa batean instalatzen saiatzen zarenean, normalean akatsez egin ohi dena eta etiketa okerreko konpromisoan ezartzea ekar dezake (adibidez, "git tag -f -m "mezu eguneratua" bezalako eraikuntza bat). my-tag1 my- tag2β€³ etiketa zaharrean etiketa bat sortuko da, eta garatzaileak etiketa berria etiketa zaharrak adierazitako konpromezuan instalatuko zela espero zuen;
  • Sorkuntza gaitzen da bitmapen biltegietarako (diskoetan oinarritutako "eskuragarritasun bitmap" egitura), konpromiso bakoitzerako eskuragarri dauden objektu multzoei buruzko datuak gordetzen dituztenak eta oinarrizko objektu baten presentzia azkar zehazteko aukera ematen dutenak. Egitura honek datuak berreskuratzeko eragiketen exekuzio-denbora nabarmen murrizten du (git fetch).

Iturria: opennet.ru

Gehitu iruzkin berria