Izdanje distribuiranog sistema izvorne kontrole Git 2.22

Poslao oslobađanje distribuiranog sistema kontrole izvora git 2.22.0. Git je jedan od najpopularnijih, najpouzdanijih i sistema za kontrolu verzija visokih performansi koji pruža fleksibilne nelinearne razvojne alate zasnovane na grananju i spajanju grana. Da bi se osigurao integritet istorije i otpornost na promene u retrospektivi, koristi se implicitno heširanje celokupne prethodne istorije u svakom urezivanju, takođe je moguće proveriti digitalne potpise programera pojedinačnih oznaka i urezivanja.

U odnosu na prethodno izdanje, u novu verziju, pripremljenu uz učešće 745 programera, prihvaćeno je 74 izmjena, od kojih je 18 prvi put učestvovalo u razvoju. Glavni inovacije:

  • Dostupan od izdanja 1.18, novi način migracije skupa urezivanja "git rebase --rebase-merges" zamijenio je staru opciju "--preserve-merges", koja je sada zastarjela. Operacija "git rebase" se koristi za zamjenu niza urezivanja novim osnovnim urezivanjem, na primjer, za premještanje jedne grane koja razvija neku novu funkciju u trenutno stanje glavne grane, što uključuje popravke dodane nakon grane:

    o - o - o (moja karakteristika)

    /

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

    o - o - o (moja karakteristika)

    /

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

    Da bi se očuvala struktura grananja u migriranoj grani, ranije se mogla koristiti opcija “--preserve-merges”, koja je, kada se radi u interaktivnom modu (git rebase -i --preserve-merges ), dozvoljavala uređivanje historije urezivanja, ali nije garantovao potpuno očuvanje strukture spremišta. Zamjenski režim "--rebase-merges" omogućava vam da zadržite strukturu promjena u migriranoj grani, dok pruža pun skup interaktivnih operacija, uključujući brisanje, pregrupisavanje i preimenovanje urezivanja.

    Na primjer, "--rebase-merges" dozvoljava ponovo gurnite urezivanje iz zasebne grane u noviju glavnu granu, zadržavajući strukturu grane u migriranoj grani, i napravite neke promjene u bilješkama urezivanja dok idete.

  • Dodata podrška za kreiranje nove grane zasnovane na rezultatu određivanja baze spajanja dve druge grane (baza spajanja, vezivanje za zajedničkog pretka) koristeći “git grana novi A…B” i “git checkout -b novi A…B ” konstrukcije, u kojima “A ...B” implicira definiranje baze spajanja između dva navedena urezivanja, slično kao što “git checkout A...B” pomjera HEAD na osnovno urezivanje i “diff A...B” prikazuje promjene između urezivanja "B" i onog koji se dijeli sa urezom "A". » predak.

    Na primjer, kada radite na zasebnoj grani my-feature, predložena karakteristika se može koristiti kada želite da počnete od druge grane, na primjer, sa istog mjesta u glavnoj grani iz koje je odjavljena grana my-feature. Ranije je to zahtijevalo ručno ispitivanje dnevnika promjena, što je bilo nezgodno kada je postojala velika historija promjena, zatim izvođenje "git merge-base master my-feature" za izračunavanje hash baze stapanja između grana master i my-feature, i kreiranje 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-funkcija A…B" da kreirate granu u odnosu na bazu spajanja dvije druge grane;

  • Dodata opcija "git grana --show-current" za prikaz imena grane dobijene operacijom naplate;
  • Dodata opcija "git checkout --no-overlay -- dir", koja omogućava, prilikom izvođenja operacije preuzimanja, da se sadržaj direktorija dir dovede u formu koja u potpunosti odgovara stanju glavne grane. Na primjer, ako postoji datoteka u lokalnoj kopiji direktorija dir koja nije u glavnoj grani, tada će po defaultu prilikom izvršavanja "git checkout master - dir" biti ostavljena, a kada se "--no-overlay " je navedena opcija, biće izbrisana;
  • Naredba "git diff" koristi generički API za raščlanjivanje opcija da objedini obradu opcija s drugim git uslužnim programima. Na primjer, u "git diff" sve opcije sada imaju svoje antagoniste ("--function-context" i "--no-function-context");
  • Dodata je mogućnost filtriranja prilikom iznošenja proširenih oznaka "git log" prikačenih na urezivanje ("trailer" - dodatne informativne zastavice, 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ćava da prikupite telemetriju o izvedenim operacijama i podacima o performansama za detaljniju analizu i otklanjanje grešaka (upravljač dodeljuje korisnik, nikakvi podaci se ne šalju van);
  • Napravio je čitljiviji izvještaj "git bisect", koji sada jasnije ističe problematična urezivanja i prikazuje zbirnu statistiku o promjenama za svaki fajl (na nivou broja izmijenjenih redova);
  • Heuristika za otkrivanje preimenovanja direktorija je redizajnirana kako bi se izbjeglo lažno postavljanje oznaka za preimenovanje. Kada ste u nedoumici, takvi direktoriji su sada označeni kao konfliktni;
  • Upozorenje se daje pri pokušaju postavljanja oznake na drugu oznaku, što se po pravilu radi greškom i može dovesti do postavljanja oznake na pogrešno urezivanje (na primjer, konstrukcija poput "git tag -f -m" ažurirana poruka "my-tag1 my-tag2" će rezultirati kreiranjem oznake na staroj oznaci, dok je programer očekivao da se nova oznaka postavi na urezivanje na koje ukazuje stara oznaka);
  • Generacija je omogućena za spremišta bitmapa (struktura diska "bitmape dostupnosti") koja pohranjuju podatke o skupovima objekata dostupnih za svako urezivanje i omogućavaju vam da brzo odredite prisustvo osnovnog objekta. Navedena struktura značajno smanjuje vrijeme izvršavanja operacija ekstrakcije podataka (git fetch).

izvor: opennet.ru

Dodajte komentar