Izdanje kontrole izvora Git 2.39

Nakon dva mjeseca razvoja, pušten je distribuirani sistem kontrole izvora Git 2.39. 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, koristi se implicitno heširanje celokupne prethodne istorije u svakom urezivanju, a moguće je i sertifikovati pojedinačne oznake i urezivanja digitalnim potpisima programera.

U odnosu na prethodnu verziju, nova verzija je uključivala 483 izmjene, pripremljene uz učešće 86 programera, od kojih je 31 prvi put učestvovao u razvoju. Glavne inovacije:

  • Komanda “git shortlog”, dizajnirana da prikaže sažetke sa statistikom iz istorije promena, dodala je opciju “-group” za proizvoljno grupisanje urezivanja po poljima koja nisu ograničena na autora ili izvršioca. Na primjer, da biste prikazali listu programera s informacijama o broju promjena, uzimajući u obzir pomoćnike spomenute u polju "Koautor", možete koristiti naredbu: git shortlog -ns --group=author - -group=trailer:koautor

    Shortlog izlaz se može agregirati pomoću specifikacija formatiranja, a opcija “--group” može značajno pojednostaviti kreiranje složenih izvještaja i eliminirati potrebu za dodatnim naredbama za sortiranje. Na primjer, da kreirate izvještaj sa informacijama o tome koliko je urezivanja za dato izdanje prihvaćeno svakog mjeseca, možete odrediti: git shortlog v2.38.0.. —date='format:%Y-%m' —group=' %cd' -s 2 2022-08 47 2022-09 405 2022-10 194 2022-11 5 2022-12 Ranije, za izvođenje slične operacije bilo je potrebno koristiti sort i uniq uslužne programe: git log v2.38.0. .. —date='format:%Y -%m' —format='%cd' | sortiraj | uniq -c

  • Proširene su mogućnosti mehanizma “cruft packova”, dizajniranog za pakovanje nedostupnih objekata koji nisu referencirani u spremištu (koji se ne odnose na grane ili oznake). Nedostupne objekte briše sakupljač smeća, ali ostaju u spremištu određeno vrijeme prije nego što se izbrišu kako bi se izbjegli uvjeti utrke. Mehanizam “cruft pack” vam omogućava da pohranite sve nedostupne objekte u jednu datoteku paketa i prikažete podatke o vremenu modifikacije svakog objekta u zasebnoj tabeli, pohranjenoj u zasebnoj datoteci sa ekstenzijom “.mtimes”, tako da ne preklapa se sa ukupnim vremenom modifikacije.

    Dužina vremena u kojem nedostupni objekti ostaju u spremištu prije nego što se stvarno obrišu je određena opcijom “--prune=”. Međutim, dok je odlaganje prije brisanja prilično efikasan i praktičan način da se spriječi oštećenje spremišta zbog uvjeta utrke, nije 100% pouzdano. Kako bi se olakšalo vraćanje oštećenog spremišta, novo izdanje pruža mogućnost spremanja objekata koji nedostaju dodavanjem opcije “--expire-to” naredbi “git repack”, koja vam omogućava da navedete datoteku za kreiranje eksternog kopija svih izbrisanih objekata. Na primjer, da biste sačuvali nedostupne objekte koji se nisu promijenili u posljednjih 5 minuta u backup.git datoteku, možete koristiti naredbu: git repack --cruft --cruft-expiration=5.minutes.ago -d --expire -to=../backup.git

  • Značajno povećana (do 70%) brzina operacije "git grep -cached" pri pretraživanju u oblastima koje koriste djelomično kloniranje (sparse-checkout) i za koje postoje parcijalni indeksi (sparse index). Ranije, prilikom navođenja opcije “-cached”, pretraga je vršena prvo u redovnom indeksu, a zatim u parcijalnim, što je dovelo do primjetnih kašnjenja pri pretraživanju u velikim spremištima.
  • Ubrzana je serverska verifikacija koherentnosti novih objekata prije nego što se postave u spremište tokom operacije "git push". Prelaskom na obračun samo deklarisanih veza prilikom provere, u test repozitorijumu sa 7 miliona linkova, od kojih je samo 3% pokriveno push operacijom, izvršene optimizacije su omogućile smanjenje vremena provere za 4.5 puta.
  • Za zaštitu od potencijalnog prekoračenja cijelih brojeva u kodu, naredba "git apply" ograničava maksimalnu veličinu zakrpa koje se mogu obraditi. Ako veličina zakrpe prelazi 1 GB, sada će se prikazati greška.
  • Kako bi se zaštitili od potencijalnih ranjivosti, napravljene su promjene za čišćenje nepotrebnih informacija iz zaglavlja postavljenih kada se koristi modul h2h3 sa opcijom GIT_TRACE_CURL=1 ili GIT_CURL_VERBOSE=1 zajedno sa HTTP/2.
  • Kada vršite odjavu na grani koja je simbolička veza sa drugom granom, naredba "git symbolic-ref HEAD" sada prikazuje ime ciljne grane, a ne ime simbolične veze.
  • Dodata podrška za argument @{-1} opciji “--edit-description” (“git grana —edit-description @{-1}”) za uređivanje opisa prethodne grane.
  • Dodata naredba "git merge-tree --stdin" za prosljeđivanje liste parametara putem standardnog unosa.
  • Na mrežnim sistemima datoteka, fsmonitor rukovalac, koji prati promjene u sistemu datoteka, je onemogućen po defaultu.

izvor: opennet.ru

Dodajte komentar