Izdanje distribuiranog sustava kontrole izvora Git 2.22

Predstavljeno izdanje distribuiranog sustava kontrole izvora Git 2.22.0. Git je jedan od najpopularnijih, pouzdanih i visokoučinkovitih sustava za kontrolu verzija, koji pruža fleksibilne nelinearne razvojne alate temeljene na grananju i spajanju. Kako bi se osigurala cjelovitost povijesti i otpornost na retroaktivne promjene, koristi se implicitno hashiranje cijele prethodne povijesti u svakom commitu, a također je moguće certificirati pojedinačne oznake i commitove digitalnim potpisima programera.

U usporedbi s prethodnim izdanjem, nova verzija je uključivala 745 promjena, u pripremi su sudjelovala 74 programera, od kojih je 18 prvi put sudjelovalo u razvoju. Glavni inovacije:

  • Dostupan od izdanja 1.18, novi način rebase uvrštavanja "git rebase --rebase-merges" zamjenjuje staru opciju "--preserve-merges", koja je sada zastarjela. Operacija "git rebase" koristi se za zamjenu niza obveza novim osnovnim obvezama, na primjer, za premještanje zasebne grane koja razvija neku novu značajku u trenutno stanje glavne grane, što uključuje popravke dodane nakon grane :

    o - o - o (moja značajka)

    /

    o - o - o - o - o (majstor)

    o - o - o (moja značajka)

    /

    o - o - o - o - o (majstor)

    Za očuvanje strukture grane u migriranoj grani, prethodno se mogla koristiti opcija “--preserve-merges” koja je, kada se izvodi u interaktivnom načinu (git rebase -i --preserve-merges), dopuštala uređivanje povijesti predaje, ali nije jamčila potpunu očuvanost strukture spremišta. Novi način rada “--rebase-merges” omogućuje vam da očuvate strukturu promjena u grani koja se migrira, dok pruža cijeli niz interaktivnih operacija, uključujući brisanje, ponovno grupiranje i preimenovanje obveza.

    Na primjer, "--rebase-merges" to omogućuje ponovno učitajte predaje iz zasebne grane u noviju glavnu granu, zadržavajući strukturu grane u migriranoj grani i napravite neke promjene u bilješkama o predaji u hodu.

  • Dodana podrška za stvaranje nove grane na temelju rezultata određivanja baze spajanja dviju drugih grana (baza spajanja, vezanje na zajedničkog pretka) pomoću konstrukcija “git branch new A...B” i “git checkout -b new A...B", u kojem "A ...B" uključuje definiranje baze spajanja između dva navedena predavanja, slično kao što "git checkout A...B" pomiče HEAD na osnovno predavanje i "diff A. ..B" pokazuje promjene između predavanja "B" i istog kao predavanja "A" "Pretka.

    Na primjer, kada radite na zasebnoj grani my-feature, ova značajka se može koristiti kada želite započeti s druge grane, na primjer, s istog mjesta u glavnoj grani iz koje je grana my-feature odjavljena. Prethodno je to zahtijevalo ručno ispitivanje dnevnika promjena, što je bilo nezgodno ako ste imali veliku povijest promjena, zatim pokretanje "git merge-base master my-feature" za izračunavanje hasha baze spajanja između grana master i my-feature i stvaranje nove grane u odnosu na zajedničkog pretka " git grana my-other-feature hash." U Gitu 2.22 možete koristiti sintaksu "git grana moja-druga-značajka A...B" za stvaranje grane u odnosu na bazu spajanja dvije druge grane;

  • Dodana opcija "git branch --show-current" za prikaz naziva grane dobivenog tijekom operacije naplate;
  • Dodana je opcija "git checkout —no-overlay — dir", koja omogućuje, prilikom izvođenja operacije provjere, dovođenje sadržaja direktorija dir u oblik koji u potpunosti odgovara stanju glavne grane. Na primjer, ako postoji datoteka u lokalnoj kopiji direktorija dir koja nije u glavnoj grani, tada će prema zadanim postavkama biti ostavljena prilikom izvođenja “git checkout master - dir”, a ako je “--no-overlay” ” je navedena opcija, bit će izbrisana;
  • Naredba "git diff" koristi univerzalni API za raščlanjivanje opcija, što omogućuje objedinjavanje rukovanja opcijama s drugim git uslužnim programima. Na primjer, u “git diff”, sve opcije sada imaju svoje antagoniste (“--function-context” i “--no-function-context”);
  • Dodana je mogućnost filtriranja proširenih oznaka priloženih obvezama u izlazu "git log" ("trailer" - oznake dodatnih informacija, kao što su Signed-off-by i Co-authored-by). Moguće je filtrirati oznake i po ključu i po vrijednosti, na primjer:
    "git log --pretty="%(trailers:key=Reviewed-by,valueonly)";

  • Dodan je novi mehanizam za praćenje, Trace2, koji nudi fleksibilniji i strukturiraniji izlazni format. Trace2 vam omogućuje prikupljanje telemetrije o izvršenim operacijama i podatke o izvedbi za detaljniju analizu i otklanjanje pogrešaka (rukovatelja dodjeljuje korisnik, podaci se ne šalju eksterno);
  • Izvještaj “git bisect” je učinjen čitljivijim, u kojem su sada jasnije istaknuti problematični komitovi i prikazana je sumarna statistika promjena za svaku datoteku (na razini broja promijenjenih linija);
  • Heuristika za određivanje preimenovanja direktorija je prerađena kako bi se eliminiralo lažno instaliranje oznaka preimenovanja. U slučaju nedoumice, takvi imenici sada su označeni kao sukobljeni;
  • Upozorenje se prikazuje kada pokušate instalirati oznaku na drugu oznaku, što se obično radi greškom i može dovesti do postavljanja oznake na pogrešno uvrštavanje (na primjer, konstrukcija poput “git tag -f -m “ažurirana poruka” my-tag1 my-tag2″ će rezultirati stvaranjem oznake na staroj oznaci, dok je programer očekivao da će nova oznaka biti instalirana na obvezu na koju ukazuje stara oznaka);
  • Generiranje je omogućeno za repozitorije bitmapa (struktura "reachability bitmaps" temeljena na disku), koja pohranjuju podatke o skupovima objekata dostupnih za svako uvrštavanje i omogućuju vam brzo određivanje prisutnosti osnovnog objekta. Ova struktura značajno smanjuje vrijeme izvršenja operacija dohvaćanja podataka (git fetch).

Izvor: opennet.ru

Dodajte komentar