Izdanje kontrole izvora Git 2.36

Nakon tri mjeseca razvoja, pušten je distribuirani sistem kontrole izvora Git 2.36. Git je jedan od najpopularnijih, najpouzdanijih i najučinkovitijih sistema kontrole verzija, koji pruža fleksibilne nelinearne razvojne alate zasnovane na grananju i spajanju. Da bi se osigurao integritet istorije i otpornost na retroaktivne promene, u svakom urezivanju se koristi implicitno heširanje celokupne prethodne istorije, takođe je moguće sertifikovati pojedinačne oznake i urezivanja digitalnim potpisima programera.

U odnosu na prethodnu verziju, u novu verziju, pripremljenu uz učešće 717 programera, usvojeno je 96 izmjena, od kojih je 26 prvi put učestvovalo u razvoju. Glavne inovacije:

  • Naredbe “git log” i “git show” sada imaju opciju “—remerge-diff” koja vam omogućava da pokažete razlike između ukupnog rezultata stapanja i stvarnih podataka prikazanih u urezivanju nakon obrade naredbe “merge” , koji vam omogućava da jasno procijenite promjene napravljene kao rezultat rješavanja sukoba spajanja. Normalna naredba "git show" uvlači različita rješenja sukoba, što otežava razumijevanje promjena. Na primjer, na snimku ekrana ispod linije “+/-” bez uvlačenja prikazuje posljednje rješenje sukoba povezanog s preimenovanjem sha1 u oid u komentaru u prvoj grani, a “+/-” sa uvlačenjem pokazuje početno rješavanje konflikta uzrokovanog pojavom dodatnog argumenta u drugoj grani u funkciji dwim_ref().
    Izdanje kontrole izvora Git 2.36

    Kada koristite opciju "--remerge-diff", razlike između rješenja sukoba nisu odvojene za svaku nadređenu granu, ali su prikazane ukupne razlike između datoteke koja ima sukobe spajanja i datoteke koja ima riješene konflikte.

    Izdanje kontrole izvora Git 2.36

  • Povećana fleksibilnost u konfigurisanju ponašanja za ispiranje predmemorije diska putem poziva funkcije fsync(). Ranije dostupan parametar core.fsyncObjectFiles je podijeljen na dvije konfiguracijske varijable core.fsync i core.fsyncMethod, pružajući mogućnost primjene fsync ne samo na objektne datoteke (.git/objects), već i na druge git strukture kao što su veze ( .git /refs), reflog i pack fajlove.

    Koristeći varijablu core.fsync, možete specificirati listu internih Git struktura za koje će fsync biti dodatno pozvan nakon operacije pisanja. Varijabla core.fsyncMethod vam omogućava da odaberete metodu za ispiranje keš memorije, na primjer, možete odabrati fsync da biste koristili sistemski poziv istog imena, ili specificirajte samo izpisivanje da biste koristili povratni upis u predmemoriju stranice.

  • Da bi se zaštitili od ranjivosti koje manipulišu zamjenom .git direktorija u dijeljene dijelove od strane drugih korisnika, pojačana je provjera vlasnika spremišta. Izvršavanje bilo koje git komande sada je dozvoljeno samo u njihovim vlastitim ".git" direktorijima. Ako direktorij sa spremištem pripada drugom korisniku, tada će se po defaultu prikazati greška. Ovo ponašanje se može onemogućiti korištenjem postavke safe.directory.
  • Komanda “git cat-file”, namijenjena za izlaz izvornog sadržaja Git objekata, dopunjena je opcijom “--batch-command”, koja nadopunjuje ranije dostupne “--batch” i “--batch-check” ” naredbe sa mogućnošću adaptivnog odabira tipa izlaza koristeći “ contents <object>” za prikaz sadržaja ili “info <object>” za prikaz informacija o objektu. Dodatno, podržana je naredba "flush" za ispiranje izlaznog bafera.
  • Naredbi “git ls-tree”, namijenjenoj za generiranje liste sadržaja stabla objekata, dodana je opcija “—oid-only” (“—object-only”), slično kao i “—name-only “, prikazujući samo identifikatore objekata radi pojednostavljenja poziva iz skripti. Također je implementirana opcija “--format”, koja vam omogućava da definirate vlastiti izlazni format kombiniranjem informacija o načinu, tipu, nazivu i veličini.
  • Naredba “git bisect run” implementira otkrivanje nepodešavanja zastavice izvršne datoteke za skriptu i u ovom slučaju prikazuje greške sa kodovima 126 ili 127 (ranije, ako skripta nije mogla da se pokrene, sve revizije su bile označene kao da imaju problema) .
  • Dodata opcija --refetch komandi "git fetch" za preuzimanje svih objekata bez obavještavanja druge strane o sadržaju koji je već na lokalnom sistemu. Ovo ponašanje može biti korisno za oporavak od kvarova kada je integritet lokalnih podataka neizvjestan.
  • Naredbe "git update-index", "git checkout-index", "git read-tree" i "git clean" sada podržavaju djelomične indekse (sparse index) za poboljšanje performansi i uštedu prostora u spremištima gdje se izvode djelomične operacije. (sparse-checkout).
  • Ponašanje naredbe “git clone —filter=… —recurse-submodules” je promijenjeno, što sada dovodi do djelomičnog kloniranja podmodula (ranije je pri izvršavanju takvih naredbi filter bio primijenjen samo na glavni sadržaj, a podmoduli su bili klonirano u potpunosti bez uzimanja u obzir filtera).
  • Komanda "git bundle" je dodala podršku za određivanje filtera za selektivno postavljanje sadržaja, slično operacijama djelomičnog kloniranja.
  • Dodata opcija "--recurse-submodules" naredbi "git branch" za rekurzivno kretanje kroz podmodule.
  • Userdiff nudi novi rukovalac za Kotlin jezik.

izvor: opennet.ru

Dodajte komentar