Izdaja porazdeljenega sistema za nadzor vira Git 2.22

Predložil izdaja porazdeljenega sistema za nadzor vira Git 2.22.0. Git je eden najbolj priljubljenih, zanesljivih in visoko zmogljivih sistemov za nadzor različic, ki zagotavlja prilagodljiva nelinearna razvojna orodja, ki temeljijo na razvejanju in združevanju. Za zagotovitev celovitosti zgodovine in odpornosti na retroaktivne spremembe se uporablja implicitno zgoščevanje celotne prejšnje zgodovine v vsaki objavi, možno pa je tudi certificirati posamezne oznake in objave z digitalnimi podpisi razvijalcev.

V primerjavi s prejšnjo izdajo je nova različica vsebovala 745 spremembe, pripravljenih s sodelovanjem 74 razvijalcev, od tega jih je 18 pri razvoju sodelovalo prvič. Glavni inovacije:

  • Na voljo od izdaje 1.18, nov način ponovne objave »git rebase --rebase-merges« nadomešča staro možnost »--preserve-merges«, ki je zdaj zastarela. Operacija "git rebase" se uporablja za zamenjavo niza potrditev z novo osnovno potrditev, na primer za premik ločene veje, ki razvija neko novo funkcijo, v trenutno stanje glavne veje, ki vključuje popravke, dodane po veji :

    o - o - o (moja funkcija)

    /

    o - o - o - o - o (mojster)

    o - o - o (moja funkcija)

    /

    o - o - o - o - o (mojster)

    Za ohranitev strukture veje v preseljeni veji je bilo prej mogoče uporabiti možnost »--preserve-merges«, ki je, ko je bila izvedena v interaktivnem načinu (git rebase -i --preserve-merges), omogočala urejanje zgodovine objave, vendar ni zagotovil popolne ohranitve strukture skladišča. Nov način »--rebase-merges« vam omogoča, da ohranite strukturo sprememb v veji, ki jo selite, hkrati pa nudi celoten obseg interaktivnih operacij, vključno z brisanjem, prerazvrščanjem in preimenovanjem potrditev.

    Na primer "--rebase-merges" omogoča ponovno naložite potrditve iz ločene veje v novejšo glavno vejo, pri tem pa ohranite strukturo veje v preseljeni veji in sproti naredite nekaj sprememb v opombah potrditve.

  • Dodana podpora za ustvarjanje nove veje na podlagi rezultata določanja baze spajanja dveh drugih vej (baze spajanja, vezava na skupnega prednika) z uporabo konstrukcij »git branch new A...B« in »git checkout -b new A...B«, v katerem »A ...B« vključuje definiranje baze združevanja med dvema podanima povabiloma, podobno kot »git checkout A...B« premakne HEAD na osnovno potrditev in »diff A. ..B" prikazuje spremembe med potrditvijo "B" in isto kot objavo "A" "Prednik.

    Na primer, ko delate na ločeni veji my-feature, lahko to funkcijo uporabite, ko želite začeti z druge veje, na primer z istega mesta v glavni veji, iz katere je bila veja my-feature odjavljena. Prej je bilo za to potrebno ročno pregledati dnevnik sprememb, kar je bilo neprijetno, če ste imeli veliko zgodovino sprememb, nato pa zagnati »git merge-base master my-feature« za izračun zgoščenosti baze spajanja med vejama master in my-feature in ustvarjanje nove veje glede na skupnega prednika " git branch my-other-feature hash." V Git 2.22 lahko uporabite sintakso "git branch my-other-feature A...B" za ustvarjanje veje glede na bazo spajanja dveh drugih vej;

  • Dodana možnost "git branch --show-current" za prikaz imena veje, pridobljenega med postopkom nakupa;
  • Dodana možnost »git checkout —no-overlay — dir«, ki omogoča, da se pri izvajanju operacije prevzema vsebina imenika dir prenese v obliko, ki popolnoma ustreza stanju glavne veje. Na primer, če obstaja datoteka v lokalni kopiji imenika dir, ki ni v glavni veji, bo privzeto ob izvajanju »git checkout master - dir« zapuščena in če je »--no-overlay« ” izbrana možnost bo izbrisana;
  • Ukaz "git diff" uporablja univerzalni API za razčlenjevanje možnosti, kar omogoča poenotenje obravnavanja možnosti z drugimi pripomočki git. Na primer, v »git diff« imajo vse možnosti zdaj svoje nasprotnike (»--function-context« in »--no-function-context«);
  • Dodana zmožnost filtriranja razširjenih oznak, pritrjenih na objave v izhodu »git log« (»napovednik« – zastavice z dodatnimi informacijami, kot sta Signed-off-by in Co-authored-by). Oznake je mogoče filtrirati po ključu in vrednosti, na primer:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • Dodan je bil nov mehanizem za sledenje, Trace2, ki ponuja bolj prilagodljiv in strukturiran izhodni format. Trace2 vam omogoča zbiranje telemetrije o izvedenih operacijah in podatke o zmogljivosti za podrobnejšo analizo in odpravljanje napak (upravljalnik dodeli uporabnik, podatki se ne pošiljajo navzven);
  • Poročilo “git bisect” je postalo bolj berljivo, v katerem so sedaj jasneje poudarjene problematične objave in prikazana je skupna statistika sprememb za vsako datoteko (na ravni števila spremenjenih vrstic);
  • Hevristika za določanje preimenovanj imenikov je bila predelana, da bi odpravili napačno namestitev oznak za preimenovanje. Če ste v dvomih, so takšni imeniki zdaj označeni kot sporni;
  • Opozorilo se prikaže, ko poskušate namestiti oznako na drugo oznako, kar je običajno storjeno pomotoma in lahko povzroči nastavitev oznake na napačno objavo (na primer konstrukcija, kot je »git tag -f -m »posodobljeno sporočilo« my-tag1 my-tag2″ bo povzročilo, da bo oznaka ustvarjena na stari oznaki, medtem ko je razvijalec pričakoval, da bo nova oznaka nameščena na potrditev, na katero kaže stara oznaka);
  • Generiranje je omogočeno za repozitorije bitnih slik (struktura »bitnih slik dosegljivosti« na disku), ki shranjujejo podatke o nizih objektov, ki so na voljo za vsako objavo, in vam omogočajo hitro ugotavljanje prisotnosti osnovnega objekta. Ta struktura znatno zmanjša čas izvajanja operacij pridobivanja podatkov (git fetch).

Vir: opennet.ru

Dodaj komentar