Objavljeno je izdanje distribuiranog sistema za upravljanje izvorom Git 2.50. Git se odlikuje visokom performansom i pruža alate za nelinearni razvoj zasnovan na grananju i spajanju grana. Da bi se obezbedila celovitost istorije i otpornost na promene „unazad“, koristi se implicitno heširanje cele prethodne istorije u svakoj reviziji, kao i verifikacija digitalnim potpisima pojedinih tagova i revizija od strane developera. Git kod se distribuiše pod GPLv2+ licencom.
U poređenju sa prethodnim izdanjem, nova verzija sadrži 621 izmenu, koju su pripremila 98 developera, od kojih je 35 prvi put uključeno u razvoj. Glavne novine:
- Proširena je mogućnost deljenja na više pack-datoteka baze nedostižnih objekata („cruft packs“), na koje u repozitorijumu nema referenci (ne ukazuju grane ili tagovi). Korišćenje više manjih pack-datoteka umesto jedne velike značajno smanjuje ulazno/izlazne operacije prilikom repakovanja repozitorijuma sa velikim brojem nedostižnih objekata, jer za svaku operaciju repakovanja nije potrebno ponovo pisati sve podatke.
U novoj verziji ponuđena je opcija „—combine-cruft-below-size“, koja omogućava organizovanje spajanja postojećih pack-datoteka čija veličina ne prelazi zadatu vrednost. Za razliku od ranije dostupne opcije „—max-cruft-size“, nova opcija „—combine-cruft-below-size“ ne ograničava maksimalnu veličinu rezultantne pack-datoteke, što omogućava efikasnije spajanje pack-datoteka u repozitorijumima sa velikim brojem nedostižnih objekata, raspoređenih u nekoliko pack-datoteka.
- Dodana je eksperimentalna podrška za inkrementalno ažuriranje višepaketskih indeksa MIDX (multi-pack index), pri čemu se svaki sloj MIDX-indeksa sa informacijama o dostupnosti objekata smešta u zasebnu bitmap-datoteku. U vrlo velikim repozitorijumima, realizovani tip indeksa omogućava brzo i efikasno dodavanje novih bitmapa dostupnosti objekata kako novih revizija dolaze.
- Stari motor za izvođenje operacija spajanja „recursive“ uklonjen je iz koda, a zamijenjen je potpuno obnovljenim motorom „ORT“ (Ostensibly Recursive’s Twin), koji je produktivniji, funkcionalniji i lakši za održavanje. ORT omogućava određivanje mogućnosti spajanja dva objekta bez stvaranja novih objekata u repozitoriju (u starom motoru bilo je potrebno izvršiti naredbu „git merge-tree —write-tree“, koja je zapisivala nove objekte u repozitorij). U Git 2.50 dodana je opcija „—quiet“ u naredbi merge-tree, što omogućava provjeru mogućnosti spajanja na osnovu povratnog koda bez zapisivanja podataka u repozitorij.
- U „git cat-file —batch“ i sličnim naredbama dodana je opcija „—filter“, koja omogućava preskočiti određene objekte tokom operacije. git cat-file —batch-check='%(objectname)' —filter='object:type=tree'
- U naredbi „git maintenance“ implementirane su tri nove akcije: worktree-prune, rerere-gc i reflog-expire. Akcija worktree-prune služi za uklanjanje zastarjelih ili oštećenih radnih stabala (worktrees) u repozitoriju. Akcija rerere-gc uklanja stare zapise preostale nakon rješavanja sukoba prilikom spajanja. Akcija reflog-expire uklanja zastarjele nedostupne objekte iz refloga.
- Dodana je naredba „git reflog drop“, koja uklanja sve podatke refloga za navedenu granu.
- Optimizovana je obrada i korištenje referenci, na primjer, implementirano je keširanje prefiksa referenci, uklonjene su suvišne provjere prilikom izvršavanja naredbe „git update-ref“, a poboljšana je efikasnost pretrage postojećih iteratora referenci.
- Za biblioteku cURL dodane su postavke KeepAlive: http.keepAliveIdle, http.keepAliveInterval i http.keepAliveCount.
- U naredbi „git rev-list“ implementirana je mogućnost izvođenja u formatu pogodnom za mašinsko parsiranje, pri čemu je svako polje odvojeno NUL simbolom.
- Perl je isključen iz zavisnosti potrebnih za alate za rad s dokumentacijom i izvršavanje testnog skupa („make test“). Mnogi Perl jednoglasnici u testovima zamijenjeni su shell funkcijama ili ponovo napisani na jeziku C.
- Dodani su userdiff-procesori za format datoteka konfiguracije „.ini“.
- U naredbi send-email poboljšana je podrška za SMTP server Outlook.
Izvor: opennet.ru
